- Este tópico contém 28 respostas, 3 vozes e foi atualizado pela última vez 17 anos, 4 meses atrás por
Anônimo.
-
AutorPosts
-
5 de novembro de 2008 às 5:34 pm #83540
Anônimo
Pessoal, estou tentando ler um txt e carregar em uma tabela no banco através do sqlloader…mas alguém aí sabe como eu faço esse processo? estou um pouco perdido nisso. meu banco é oracle10g.
obs: tem como eu fazer o sqlloader no windows? 🙄
5 de novembro de 2008 às 6:18 pm #83541Regis Araujo
ParticipanteOla Cleber, boa tarde!
Eu utilizo muito o SqlLoader no Oracle 8i, não sei se são as mesmas configurações no 10g, mas vou postar abaixo…
Voce precisa criar uma pasta no C da máquina, jogar todos os arquivos dentro desta pasta e criar o arquivo de configuração (CTL), neste arquivo você irá setar a maneira que ele deverá ler o TXT.
Arquivo CTL:
Abra o bloco de notas e cole o codigo abaixo.
load data
infile ‘C:IMPORTTXTNome_Arquivo.txt’
into table NOME_TABELA
fields terminated by “,” optionally enclosed by ‘”‘
( CAMPO1, CAMPO2, CAMPO3,… )Obs: No lugar da , em “,” você coloca como os valores são separados dentro do arquivo e no lugar de ‘ ” ‘ você coloca com que caracter termina a linha, assim ele irá pular para a proxima linha..
E abaixo os campos que deverão receber os registros na ordem.
Esta é uma maneira bem basica de importar os registros.Após isto, salve este arquivo com qualquer nome, eu costumo salvar como ImpNome_Arquivo.ctl
Abra o CMD, acesse o diretório C:oracleora81bin e digite
sqlldr usuario/senha@SERVIDOR control=ImpNome_Arquivo.ctl
E PRONTO… Basta você observar os registros sendo importados…
Já consegui importar 5 milhoes de registros em 1m e 35 segundos…
Qualquer dúvida pode perguntar…
Espero ter ajudado…
5 de novembro de 2008 às 6:31 pm #83542Regis Araujo
Participante[quote=”Thunder_Catz”:2u3jbk3g]Ola Cleber, boa tarde!
Eu utilizo muito o SqlLoader no Oracle 8i, não sei se são as mesmas configurações no 10g, mas vou postar abaixo…
Voce precisa criar uma pasta no C da máquina, jogar todos os arquivos dentro desta pasta e criar o arquivo de configuração (CTL), neste arquivo você irá setar a maneira que ele deverá ler o TXT.
Arquivo CTL:
Abra o bloco de notas e cole o codigo abaixo.
load data
infile ‘C:IMPORTTXTNome_Arquivo.txt’
into table NOME_TABELA
fields terminated by “,” optionally enclosed by ‘”‘
( CAMPO1, CAMPO2, CAMPO3,… )Obs: No lugar da , em “,” você coloca como os valores são separados dentro do arquivo e no lugar de ‘ ” ‘ você coloca com que caracter termina a linha, assim ele irá pular para a proxima linha..
E abaixo os campos que deverão receber os registros na ordem.
Esta é uma maneira bem basica de importar os registros.Após isto, salve este arquivo com qualquer nome, eu costumo salvar como ImpNome_Arquivo.ctl
Abra o CMD, acesse o diretório C:oracleora81bin e digite
sqlldr usuario/senha@SERVIDOR control=ImpNome_Arquivo.ctl
E PRONTO… Basta você observar os registros sendo importados…
Já consegui importar 5 milhoes de registros em 1m e 35 segundos…
Qualquer dúvida pode perguntar…
Espero ter ajudado…[/quote]
Só Corrigindo coisa…. no CMD tem que digitar assim..
sqlldr usuario/senha@SERVIDOR control=C:IMPORTTXTImpNome_Arquivo.ctl
Tem que informar onde esta o arquivo CTL corretamente…
5 de novembro de 2008 às 6:36 pm #83543Rodrigo Mesquita
ParticipanteCleber,
Se vc usa o plsql developer, no menu “TOOLS” tem a opção “text importer” acho bem simples e fácil de usar para importar txt´s.
5 de novembro de 2008 às 8:11 pm #83546Anônimo
beleza brother, tá ajudando bastante. agora como eu faço para startar esse processo automaticamente todos os dias num determinado horário?
5 de novembro de 2008 às 8:32 pm #83547Regis Araujo
ParticipanteFala Cleber..
Bom, ai já fica mais complicado, se você fizer da maneira que eu falei via SqlLoader, você tem que alterar as configurações do arquivo de controle CTL, para ele encontrar o arquivo TXT.
Se o nome do arquivo for sempre o mesmo e a tabela também, você pode criar uma regra no windows que irá executar o comando “sqlldr usuario/senha@SERVIDOR control=C:IMPORTTXTImpNome_Arquivo.ctl” no horario que você quiser…
Abraços…
5 de novembro de 2008 às 8:56 pm #83548Anônimo
cara tá me dando esse erro aqui:
SQL*Loader-522: falha em lfiopn para o arquivo (705.log)
5 de novembro de 2008 às 9:11 pm #83549Regis Araujo
ParticipanteCleber,
Posta aqui como ficou o conteudo do seu arquivo .CTL
Abraços…
5 de novembro de 2008 às 9:12 pm #83550Regis Araujo
Participante[quote=”Thunder_Catz”:1xj3os3y]Cleber,
Posta aqui como ficou o conteudo do seu arquivo .CTL
Abraços…[/quote]
Ahh… E dentro da pasta ele tbm deve ter criado um arquivo de erro…
Posta o conteudo deste arquivo tbm…
5 de novembro de 2008 às 9:18 pm #83551Anônimo
Não foi criado arquivo de erro. arquivo CTL a baixo:
LOAD DATA
INFILE ‘C:ArquivosSAP200806MRED0001C.txt’
INSERT
INTO TABLE BEA.TBEA_CARGA_LANCTO_CONTABIL_TMP
(
CLCT_NUM_LAN_SAP POSITION(001:010) CHAR,
CLCT_ANOMES_MOVTO POSITION(011:016) CHAR,
CLCT_ORIGEM POSITION(017:019) CHAR,
CLCT_REF_LANC POSITION(020:037) CHAR,
CLCT_COD_EMPRESA POSITION(038:041) CHAR,
CLCT_COD_FILIAL POSITION(042:045) CHAR,
CLCT_DAT_DOCTO POSITION(046:053) CHAR,
CLCT_TIP_DOCTO POSITION(054:055) CHAR,
CLCT_DAT_LANCTO POSITION(056:065) CHAR,
CLCT_TEX_CAB POSITION(066:090) CHAR,
CLCT_IND_TIP_LANCTO POSITION(091:091) CHAR,
CLCT_LAN_SAP_ESTORNO POSITION(092:101) CHAR,
CLCT_TIP_LAN_SAP_EST POSITION(102:102) CHAR
)5 de novembro de 2008 às 9:49 pm #83553Regis Araujo
ParticipanteOpa Cleber..
Eu não utilizo desta maneira, mas para você fazer desta maneira é bem mais simples, você tem que fazer assim..:
——————-
LOAD DATA
INFILE *
INSERT
INTO TABLE BEA.TBEA_CARGA_LANCTO_CONTABIL_TMP
(
CLCT_NUM_LAN_SAP POSITION(001:010) CHAR(10),
CLCT_ANOMES_MOVTO POSITION(011:016) CHAR(6),
CLCT_ORIGEM POSITION(017:019) CHAR(3),
CLCT_REF_LANC POSITION(020:037) CHAR(17),
CLCT_COD_EMPRESA POSITION(038:041) CHAR(4),
CLCT_COD_FILIAL POSITION(042:045) CHAR(4),
CLCT_DAT_DOCTO POSITION(046:053) CHAR(9),
CLCT_TIP_DOCTO POSITION(054:055) CHAR(2),
CLCT_DAT_LANCTO POSITION(056:065) CHAR(10),
CLCT_TEX_CAB POSITION(066:090) CHAR(25),
CLCT_IND_TIP_LANCTO POSITION(091:091) CHAR(1),
CLCT_LAN_SAP_ESTORNO POSITION(092:101) CHAR(10),
CLCT_TIP_LAN_SAP_EST POSITION(102:102) CHAR(1)
)
begindataCOLE AQUI TODO O CONTEUDO DO SEU ARQUIVO
—————Depois salve como .CTL e rode o processo no CMD ou via SQL´PLUS:
Via CMD:
sqlldr usuario/senha@SERVIDOR control=C:IMPORTTXTImpNome_Arquivo.ctlVia SQL´PLUS
$sqlldr usuario/senha@SERVIDOR control=C:IMPORTTXTImpNome_Arquivo.ctlPoste aqui se deu certo…
Abraços…
5 de novembro de 2008 às 9:53 pm #83554Anônimo
Acontece o memso erro e não me gerou nenhum arquivo de erro.
5 de novembro de 2008 às 10:04 pm #83555Anônimo
coloquei somente duas linhas do conteúdo do arquivo, veja se é assim mesmo:
LOAD DATA
INFILE *
INSERT
INTO TABLE BEA.TBEA_CARGA_LANCTO_CONTABIL_TMP
(
CLCT_NUM_LAN_SAP POSITION(001:010) CHAR,
CLCT_ANOMES_MOVTO POSITION(011:016) CHAR,
CLCT_ORIGEM POSITION(017:019) CHAR,
CLCT_REF_LANC POSITION(020:037) CHAR,
CLCT_COD_EMPRESA POSITION(038:041) CHAR,
CLCT_COD_FILIAL POSITION(042:045) CHAR,
CLCT_DAT_DOCTO POSITION(046:053) CHAR,
CLCT_TIP_DOCTO POSITION(054:055) CHAR,
CLCT_DAT_LANCTO POSITION(056:065) CHAR,
CLCT_TEX_CAB POSITION(066:090) CHAR,
CLCT_IND_TIP_LANCTO POSITION(091:091) CHAR,
CLCT_LAN_SAP_ESTORNO POSITION(092:101) CHAR,
CLCT_TIP_LAN_SAP_EST POSITION(102:102) CHAR
)
begindata5300000067|062008||COF0060206200801|MRED||28/06/2008|02|28/06/2008|FATURAMENTO|||
5300000065|062008||COF0030206200801|MRED||28/06/2008|02|28/06/2008|FATURAMENTO|||5 de novembro de 2008 às 10:08 pm #83556Regis Araujo
ParticipanteCleber,
Todos os campos na sua tabela são VARCHAR??
Pois você declarou no arquivo que todos são CHAR, se houver algum registro que não seja CHAR ele irá apresentar erros…Tem como você me passar uma amosta deste arquivo?
Ou como ele esta estruturado dentro do arquivo.txt?E eu irei testar aqui e posto o que apresentou.
Abraços…
5 de novembro de 2008 às 10:17 pm #83557Regis Araujo
ParticipanteCleber,
Faça um teste com o script que eu vou postar abaixo…
load data
infile *
into table TBEA_CARGA_LANCTO_CONTABIL_TMP
fields terminated by “|” optionally enclosed by ‘”‘
(
CLCT_NUM_LAN_SAP,
CLCT_ANOMES_MOVTO,
CLCT_ORIGEM,
CLCT_REF_LANC,
CLCT_COD_EMPRESA,
CLCT_COD_FILIAL,
CLCT_DAT_DOCTO,
CLCT_TIP_DOCTO,
CLCT_DAT_LANCTO,
CLCT_TEX_CAB,
CLCT_IND_TIP_LANCTO,
CLCT_LAN_SAP_ESTORNO,
CLCT_TIP_LAN_SAP_EST POSITION(102:102) CHAR(1)
)
begindata
5300000067|062008||COF0060206200801|MRED||28/06/2008|02|28/06/2008|FATURAMENTO|||
5300000065|062008||COF0030206200801|MRED||28/06/2008|02|28/06/2008|FATURAMENTO|||Ou
load data
infile ‘C:ArquivosSAP200806MRED0001C.txt’
into table TBEA_CARGA_LANCTO_CONTABIL_TMP
fields terminated by “|” optionally enclosed by ‘”‘
(
CLCT_NUM_LAN_SAP,
CLCT_ANOMES_MOVTO,
CLCT_ORIGEM,
CLCT_REF_LANC,
CLCT_COD_EMPRESA,
CLCT_COD_FILIAL,
CLCT_DAT_DOCTO,
CLCT_TIP_DOCTO,
CLCT_DAT_LANCTO,
CLCT_TEX_CAB,
CLCT_IND_TIP_LANCTO,
CLCT_LAN_SAP_ESTORNO,
CLCT_TIP_LAN_SAP_EST POSITION(102:102) CHAR(1)
)Abraços…
-
AutorPosts
- Você deve fazer login para responder a este tópico.