tag:blogger.com,1999:blog-5738872960415708519.post3648327151471630444..comments2024-01-29T06:38:46.574-03:00Comments on Blog do DBA/Instrutor Fábio Prado: Cargas de dados mais rápidas com o SQL LoaderFábio Pradohttp://www.blogger.com/profile/05498446367081034213noreply@blogger.comBlogger35125tag:blogger.com,1999:blog-5738872960415708519.post-48156073917981615262019-03-19T20:18:25.517-03:002019-03-19T20:18:25.517-03:00Nunca fiz carga com mais de 1 arquivo, como está c...Nunca fiz carga com mais de 1 arquivo, como está configurado o seu arquivo de controle? Talvez este erro esteja ocorrendo pq esse comando lê o maior valor da coluna na tabela, se o valor já foi utilizado, mas a transação nao foi commitada, é possível ocorrer a repetição!Fábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-48477660906881986022019-03-18T13:39:18.721-03:002019-03-18T13:39:18.721-03:00Quando tento usar no loader o SEQUENCE (MAX,1), el...Quando tento usar no loader o SEQUENCE (MAX,1), ele carrega o primeiro arquivo, mas quando vai carregar o segundo, ele insere o ID do último registro incluído na tabela, duplicando o campo. Anonymoushttps://www.blogger.com/profile/13683920813196201607noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-19943079507645903532017-08-03T14:04:15.415-03:002017-08-03T14:04:15.415-03:00Então criei o meu arquivo.ctl, e quero que ele sej...Então criei o meu arquivo.ctl, e quero que ele seja executado todo dia as 7 horas. Gostaria que esse processo fosse automatico em vez de entrar no sql plus e escrever uma linha para executar a importação. Ou se não, gostaria de ter alguma maneira de executar a importação pelo sqlloader por meio de uma procedure no banco.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-62519867286835845802017-08-02T23:13:28.817-03:002017-08-02T23:13:28.817-03:00Me explique melhor o que você precisa que aí tento...Me explique melhor o que você precisa que aí tento te ajudar.Fábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-83371531130296509942017-08-02T15:41:31.174-03:002017-08-02T15:41:31.174-03:00Fabio. Sabe alguma maneira simples de executar ou ...Fabio. Sabe alguma maneira simples de executar ou fazer a chamada do meu arquivo.ctl por uma procedure ou usa-la em um Job?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-83713305585159449622017-08-02T10:34:36.281-03:002017-08-02T10:34:36.281-03:00Obrigado Fabio, deu certo. Só usar o 'When'...Obrigado Fabio, deu certo. Só usar o 'When' após a linha do into.<br /><br />WHEN (CODLINHA = '0')Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-14635968892069166582017-07-28T14:38:54.473-03:002017-07-28T14:38:54.473-03:00Rubens, pode sim. Eu nunca precisei usar, mas veja...Rubens, pode sim. Eu nunca precisei usar, mas veja no link https://docs.oracle.com/cd/B19306_01/server.102/b14215/ldr_control_file.htm#i1005798 na seção "Relative Positioning Based on the POSITION Parameter" como fazer, okFábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-485448062831511962017-07-28T08:41:51.025-03:002017-07-28T08:41:51.025-03:00Olá. Como posso colocar condição em meu arquivo pa...Olá. Como posso colocar condição em meu arquivo para realizar importação em tabela? Ex: Em minha se position 1:1 for igual 0 então insere os valores dessa linha em tabela0 , se position 1:1 for igual a 1 insere em tabela1.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-60129578951031496352016-11-18T11:11:04.651-02:002016-11-18T11:11:04.651-02:00Não sou programador Java, então não posso te afirm...Não sou programador Java, então não posso te afirmar isso com certeza, só sei que para funcionar a máquina do servidor web (no seu caso) tem que ter o utilitário do sql loader instalado (junto com o Oracle Client).<br />[]sFábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-62024866662499085412016-11-18T11:01:42.417-02:002016-11-18T11:01:42.417-02:00Olá,
Tem como executar isso via java(.xhtml) chama...Olá,<br />Tem como executar isso via java(.xhtml) chamando na pagina? Preciso fazer isso mais que seja via web.<br />||< Fabiano Carloto >||https://www.blogger.com/profile/13428645663676493842noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-72452055780176331902014-07-29T12:03:11.333-03:002014-07-29T12:03:11.333-03:00O SQL Loader sempre gera um arquivo de log quando ...O SQL Loader sempre gera um arquivo de log quando ele é executado. Qq falha no processo de carga será registrada lá. Se este arquivo não está sendo gerado é bem provável que o Sql Loader nem está sendo executado. Será que na máquina cliente que está falhando vc tem o executável do SQL Loader? Vc está informando o caminho completo do SQL loader (pasta + executável)? Se não está, o caminho da pasta do executável está inclusa no PATH do SO?<br /><br />[]sFábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-46192342324809041972014-07-29T10:32:30.320-03:002014-07-29T10:32:30.320-03:00Fabio,
Eu tenho um arquivo.txt com apenas registro...Fabio,<br />Eu tenho um arquivo.txt com apenas registros tam. 10 separador TAB. Ao executar o SQLLOADER não carrega na TABELA do BANCO. A estrutura da TABELA tem apenas um CAMPo tam 10. No arquivo de controle caminha está correto. Em uma maquina o processo se completa OK e em outra o processo os dados não são carregados e não dá nenhuma msg. de erro. Poderia me orientar qto. ao que avaliar. Variaveis de ambiente ? PATH ? Versão do SQLLOADER ? etc ....Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-23763338710233438732013-12-18T18:07:54.706-02:002013-12-18T18:07:54.706-02:00Rodrigo, para te dar a solução eu teria que analis...Rodrigo, para te dar a solução eu teria que analisar seu arquivo de entrada, mas como nao vou ter tempo para fazer isso, sugiro que consulte as referencias ao final do artigo. O que eu posso te ajudar de forma rapida, é que vc está no caminho certo. Para ignorar determinadas linhas vc tem que incluir a cláusula when no arquivo de controle e isso vc já está fazendo. O erro deve estar na linha da sua cláusula when, ok?<br /><br />[]sFábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-9606389481956669472013-12-18T17:17:01.562-02:002013-12-18T17:17:01.562-02:00Boa tarde Fábio, tudo bom?
No Sql Loader que esto...Boa tarde Fábio, tudo bom?<br /><br />No Sql Loader que estou montando o cliente me pediu para desconsiderar a linha ser importada caso uma determinada palavra esteja presente, tem como fazer isso?<br />Tentei sem sucesso:<br /><br />options (silent=(header,feedback,discards))<br />load data<br />infile *<br />append<br />into table ap_credit_card_trxns_all<br />when ((1:2) = '2A') and ((134:178) != '%SAQUE%')<br />( ... )<br /><br />Se puder ajudar agradeço muito!<br />RodrigoAnonymoushttps://www.blogger.com/profile/18124496198264098232noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-87877328310823995512013-11-27T08:36:28.309-02:002013-11-27T08:36:28.309-02:00Carlos, eu acho desnecessário inserir esse asteris...Carlos, eu acho desnecessário inserir esse asterisco, de qq forma, se ele for inserido vc pode incluir no arquivo de controle uma validação para quando encontrar o asterisco fazer algo diferente, gravando-o no arquivo de dados descartados.<br /><br />[]sFábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-86347468393063807372013-11-27T08:13:37.071-02:002013-11-27T08:13:37.071-02:00Bom dia Fábio.
Em minhas interfaces atualmente, so...Bom dia Fábio.<br />Em minhas interfaces atualmente, solicito aos clientes inserirem um asterisco na última linha, denotando que não há mais nenhuma informação a ser inserida. Via Sql Loader há como fazer algo parecido?<br />ObrigadoAnonymoushttps://www.blogger.com/profile/02709241883914501511noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-44668852165656209472013-10-02T13:41:38.685-03:002013-10-02T13:41:38.685-03:00Eric, nunca fiz nada deste tipo com o SQL Loader, ...Eric, nunca fiz nada deste tipo com o SQL Loader, mas pelo que eu já estudei sobre o assunto, tenho quase certeza de que não dá para incluir essa condição de fazer insert ou update. <br /><br />Outra técnica que dá fazer isso e qq tratamento condicional, que é mais flexível e mais performática que o SQL Loader (e que já estou ensinando no nos treinamentos de SQL Tuning), é criar uma tabela externa para ler o arquivo de dados e implementar uma stored procedure para processar os dados dessa tabela externa, inserindo-as em outras tabelas do BD. Para aprender a criar tabelas externas, leia o artigo: http://www.fabioprado.net/2010/09/tabelas-externas.html<br /><br />[]s<br /><br />[]sFábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-86601330782933394712013-10-02T11:05:22.364-03:002013-10-02T11:05:22.364-03:00Bom dia Fábio!
Cara, montei o arquivo .ctl certin...Bom dia Fábio!<br /><br />Cara, montei o arquivo .ctl certinho, ele insere os dados com sucesso na tabela, mas tem um porém, neste txt que tenho os dados, tem além de novos dados, alterações de campos que já existem nas tabelas. Para importar tudo, preciso desabilitar a constraint, só que aí fico com ID's repetidos na tabela. Sabe dizer se há alguma forma de tratar isso dentro do ctl? Criar um tratamento para ele entender que se o registro já existir, para fazer update, caso contrário insere.<br /><br />Se puder ajudar ficarei muito grato!<br /><br />EricEricnoreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-85545321872076348742013-06-12T13:07:49.880-03:002013-06-12T13:07:49.880-03:00Luis, o "Oracle Client" não foi instalad...Luis, o "Oracle Client" não foi instalado no modo completo. Eu acho que o item que é necessário selecionar durante a instalação para ter o sqlldr.exe é o "Oracle Database Utilities...". Se não for, faça a instalação completa que aí eu tenho certeza de que você encontrará o sqlldr.exe, oK?<br /><br />[]sFábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-44336263883130747432013-06-11T20:03:33.949-03:002013-06-11T20:03:33.949-03:00Fabio, não encontrei o sqlldr.exe na pasta bin do ...Fabio, não encontrei o sqlldr.exe na pasta bin do meu cliente. Sabe como faço para instalar? Existe uma versão especifica de cliente? Anonymoushttps://www.blogger.com/profile/10168235783384702655noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-15286293750354577802012-12-13T15:35:03.763-02:002012-12-13T15:35:03.763-02:00Pedro, eu não sei como resolver isso pelo SQL Load...Pedro, eu não sei como resolver isso pelo SQL Loader, mas já eliminei problemas parecidos utilizando macros em editores de textos mais avançados, como por exemplo, o Notepad++. Fábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-61740324804925572502012-12-13T15:33:16.736-02:002012-12-13T15:33:16.736-02:00Pesquisando nas referências deste artigo, olha só ...Pesquisando nas referências deste artigo, olha só o que eu achei e que talvez possa te ajudar:<br /><br />-------------------------------<br />Comparing Fields to BLANKS<br /><br />The BLANKS keyword makes it possible to determine easily if a field of unknown length is blank.<br /><br />For example, use the following clause to load a blank field as null:<br /><br />full_field_name ... NULLIF column_name=BLANKS <br /><br />The BLANKS keyword only recognizes blanks, not tabs. It can be used in place of a literal string in any field comparison. The condition is TRUE whenever the column is entirely blank.<br /><br />The BLANKS keyword also works for fixed-length fields. Using it is the same as specifying an appropriately-sized literal string of blanks. For example, the following specifications are equivalent:<br /><br />fixed_field CHAR(2) NULLIF (fixed_field)=BLANKS <br />fixed_field CHAR(2) NULLIF (fixed_field)=" " <br />-------------------------------<br /><br />Eu nunca usei, mas encontrei isso no link: http://www.cs.umbc.edu/help/oracle8/server.815/a67792/ch05.htmFábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-69188614037762229122012-12-13T15:27:27.425-02:002012-12-13T15:27:27.425-02:00Pedro, se o campo tiver espaço em branco o Oracle ...Pedro, se o campo tiver espaço em branco o Oracle sempre vai interpretar como NULL, esse é um comportamento padrão do Oracle. Pq vc acha melhor ter um espaço em branco do que deixar o campo nulo?Fábio Pradohttps://www.blogger.com/profile/05498446367081034213noreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-33107614832666168172012-12-13T15:00:10.061-02:002012-12-13T15:00:10.061-02:00Outro problema que acontece é quando um determinad...Outro problema que acontece é quando um determinado campo tem somente um espaço em branco, o Sql Loader interpreta como NULL. Tem como forçá-lo a interpretar como espaço ?Pedro Rogério Martinsnoreply@blogger.comtag:blogger.com,1999:blog-5738872960415708519.post-37129312543061540792012-12-12T15:50:50.102-02:002012-12-12T15:50:50.102-02:00Olá Fábio.
Tenho uma tabela com um campo texto de...Olá Fábio. <br />Tenho uma tabela com um campo texto de 400 posições. Na aplicação o pessoal populou esse campo e usou a tecla enter.<br />O resultado disso é que o Sql Loader, ao encontrar o ^M, entende que é uma nova linha e se perde.<br />Tens alguma sugestão para esse problema ?<br /><br />Sds.<br />Pedro.Pedro Rogério Martinsnoreply@blogger.com