Bom galera,
se alguém puder me ajudar, preciso fazer uma carga de dados usando a package UTL_FILE para tabelas do Siebel, porém o separador dos campos que virá no txt será ;, alguém poderia me ajudar a fazer isso !?!?
OBRIGADO ...
UTL_FILE: ler arquivo com separador
-
- Rank: Estagiário Pleno
- Mensagens: 4
- Registrado em: Qui, 03 Jul 2008 9:04 am
- Localização: Barueri
-
- Rank: Analista Júnior
- Mensagens: 88
- Registrado em: Sex, 18 Ago 2006 11:13 am
- Localização: São Paulo - SP
Bertosro
MSN / TALK - roberto.fernandes@gmail.com
MSN / TALK - roberto.fernandes@gmail.com
Olá Leonina Bom Dia!
Fique tranqüila pois isso é relativamente simples de se fazer, você já trabalhou alguma vez com pacote UTL_FILE?
Se não trabalhou primeiro entenda como fazer a leitura do arquivo e após isso basta somente tratar a informação e pronto.
Segue abaixo um exemplo de leitura.
Fique tranqüila pois isso é relativamente simples de se fazer, você já trabalhou alguma vez com pacote UTL_FILE?
Se não trabalhou primeiro entenda como fazer a leitura do arquivo e após isso basta somente tratar a informação e pronto.
Segue abaixo um exemplo de leitura.
Create Or Replace Package PKG_LE_TXT AS
-----------------------
-- Leitura de um Txt --
-----------------------
Procedure PRC_LEITURA_TXT
( P_Nome_Local In Varchar2
, P_Nome_Arq In Varchar2
);
End PKG_LE_TXT ;
/
create Or Replace Package Body PKG_LE_TXT AS
Procedure PRC_LEITURA_TXT
( P_Nome_Local In Varchar2
, P_Nome_Arq In Varchar2
)
Is
---------------
-- Variaveis --
---------------
vLinha Varchar2(2000);
uArquivo Utl_File.File_Type;
Begin
--------------------------
-- Define no do Arquivo --
--------------------------
Begin
-----------------------
--- Abre arquivo txt --
-----------------------
uArquivo := Utl_File.FOpen(P_Nome_Local , P_Nome_Arq , 'r');
---------------------------------
-- Loop para Ler o Arquivo Txt --
---------------------------------
Loop
Begin
Utl_File.Get_Line(uArquivo , vLinha);
Insert Into Tabela
( Coluna01 -- 01
, Coluna02 -- 02
)
Values
( Substr( vLinha , 1,20 )
, Substr( vLinha ,21,20 )
);
Exception
-- reached the end of file
When No_Data_Found Then
Exit;
-- line to long to store in buffer
When Value_Error Then
Raise_Application_Error(-20214, 'Value_Error '||sqlerrm);
-- not a valid file handle
When Utl_File.Invalid_FileHandle Then
Raise_Application_Error(-20215, 'Invalid_filehandle '||sqlerrm);
-- file is not open for reading
When Utl_File.Invalid_Operation Then
Raise_Application_Error(-20216, 'invalid_operation '||sqlerrm);
-- OS error occurred during read
When Utl_File.Read_Error Then
Raise_Application_Error(-20217, 'Read_Error '||sqlerrm);
End;
End Loop;
Utl_File.FClose(uArquivo);
Commit;
Exception
-- file location or name was invalid
When Utl_File.Invalid_Path Then
Raise_Application_Error(-20210, 'PROBLEMA NA ABERTURA ARQUIVO, '||'INVALID PATH');
-- the open_mode string was invalid
When Utl_File.Invalid_Mode Then
Raise_Application_Error(-20211, 'PROBLEMA NA ABERTURA ARQUIVO, '||'INVALID MODE');
-- file could not be opened as requested
When Utl_File.Invalid_Operation Then
Raise_Application_Error(-20212, 'Invalid_Operation '|| SqlErrm);
-- specified max_linesize is too large or too small
When Utl_File.Invalid_Maxlinesize Then
Raise_Application_Error(-20213, 'Invalid_Maxlinesize '|| SqlErrm);
End;
-------------------
-- Fecha Arquivo --
-------------------
Utl_File.FClose(uArquivo);
Commit;
End PRC_LEITURA_TXT;
End PKG_LE_TXT;
/
- vetis
- Rank: Programador Pleno
- Mensagens: 36
- Registrado em: Sex, 25 Abr 2008 10:29 am
- Localização: cariacica - es
Thiago Vetis
Creedence Clearwater Revival -
Creedence Clearwater Revival -
Bom dia pessoa,
Eu tenho uma tabela com uma coluna de telefone que foi cadastrada das seguintes maneiras:
(21)51263256(47)41125858
(21)25568899(47)74587487
Preciso que retire os parênteses e os respectivos números que estão dentro dele para ficar da seguinte maneira:
5126325641125858
2556889974587487
Alguém sabe alguma maneira de retira os parênteses e tudo que está dentro dele ?
att,
Eu tenho uma tabela com uma coluna de telefone que foi cadastrada das seguintes maneiras:
(21)51263256(47)41125858
(21)25568899(47)74587487
Preciso que retire os parênteses e os respectivos números que estão dentro dele para ficar da seguinte maneira:
5126325641125858
2556889974587487
Alguém sabe alguma maneira de retira os parênteses e tudo que está dentro dele ?
att,
-
- Rank: Estagiário Pleno
- Mensagens: 4
- Registrado em: Qui, 03 Jul 2008 9:04 am
- Localização: Barueri
Certo BERTOSRO ...
Só pra esclarecer é LÉOLIMA_PINHEIRO
porém o código que você colocou logo acima tem a delimitação do arquivo através da posição no caso " Substr( vLinha , 1,20 ),
Substr( vLinha ,21,20 )!
Eu gostaria de saber se eu consigo ler o arquivo até o delimitador ';' e gerar essa informação no campo da tabela, essa hipotese já foi até levantada, mas com isso os campos da tabela poderiam ficar despadronizados, um campo teria 20, 30, ou até 40 posições sendo que as informações que serã armazenadas não serão tã grandes.
Mesmo assim agradeço a dica !!!!
Só pra esclarecer é LÉOLIMA_PINHEIRO
porém o código que você colocou logo acima tem a delimitação do arquivo através da posição no caso " Substr( vLinha , 1,20 ),
Substr( vLinha ,21,20 )!
Eu gostaria de saber se eu consigo ler o arquivo até o delimitador ';' e gerar essa informação no campo da tabela, essa hipotese já foi até levantada, mas com isso os campos da tabela poderiam ficar despadronizados, um campo teria 20, 30, ou até 40 posições sendo que as informações que serã armazenadas não serão tã grandes.
Mesmo assim agradeço a dica !!!!
-
- Rank: DBA Pleno
- Mensagens: 264
- Registrado em: Dom, 19 Ago 2007 8:18 pm
- Localização: Ribeirão Preto - SP
Lucas de Souza
OCA Developer
Analista de sistemas
OCA Developer
Analista de sistemas
galera procurem aqui no forum sobre EXTERNAL TABLE
isso já me ajudou muito para importar arquivos... vou postar qui mais ou menos o que ela fáz e mais um exemplo...
External Tabel é uma tabela que lê dados diretamente de um arquivo texto ou não...
funciona perfeitamente com arquivos .csv delimitados por ";"
aqui vai um exemplo
pessoal usando o embromaxion dá pra configurar esta tabela...
a parte mais importante
isso já me ajudou muito para importar arquivos... vou postar qui mais ou menos o que ela fáz e mais um exemplo...
External Tabel é uma tabela que lê dados diretamente de um arquivo texto ou não...
funciona perfeitamente com arquivos .csv delimitados por ";"
aqui vai um exemplo
CREATE TABLE orc_2008EXT (
APL_ID NUMBER(10),
CD_CCUSTO NUMBER(13),
DT_LANC NUMBER(8),
VL NUMBER(23,11)
)
ORGANIZATION EXTERNAL (
TYPE ORACLE_LOADER
DEFAULT DIRECTORY DADOS
ACCESS PARAMETERS (
RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ';'
MISSING FIELD VALUES ARE NULL
(
APL_ID CHAR(10),
CD_CCUSTO CHAR(13),
DT_LANC CHAR(8),
VL CHAR(50)
)
)
LOCATION ('ARQUIVO1.csv','ARQUIVO2.csv')
)
PARALLEL 5
REJECT LIMIT UNLIMITED;
a parte mais importante
RECORDS DELIMITED BY NEWLINE --- A cada linha no arquivo, será uma nova linha na tabela
FIELDS TERMINATED BY ';' ---- cada campo terminará com ";"(pode alterar)
MISSING FIELD VALUES ARE NULL ----- valores não encontrados serão nulos na tabela
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 16 visitantes