Importação de arquivo texto com bulk insert
03/12/2004
0
Caros amigos,
não sei como executar a seguinte situação:
tenho um arquivo txt que quero importar através do comando bulk insert, só que este arquivo está da seguinte maneira
00100|00000|....
00100|00001|....
...
00200|00000|....
...
00300|00000|....
...
Reparem que a primeira coluna é como um registro identificador e para cada registro existe uma tabela. A minha dúvida é: como separar no bulk insert o registro para cada tabela?
Se tiverem outra maneira de fazer fora o bulk insert também tá legal...
Obrigado e até mais...
não sei como executar a seguinte situação:
tenho um arquivo txt que quero importar através do comando bulk insert, só que este arquivo está da seguinte maneira
00100|00000|....
00100|00001|....
...
00200|00000|....
...
00300|00000|....
...
Reparem que a primeira coluna é como um registro identificador e para cada registro existe uma tabela. A minha dúvida é: como separar no bulk insert o registro para cada tabela?
Se tiverem outra maneira de fazer fora o bulk insert também tá legal...
Obrigado e até mais...
Jorgeolimpia
Curtir tópico
+ 0
Responder
Posts
03/12/2004
Laertepjunior
Eu não conheço uma maneira do Bulk fazer isso...mas uma vez eu tive que fazer praticamente isso que vc precisa... e resolvi colocando todos os dados do txt numa tabela fria com o bulk insert..e logo depois tratei desta tabela fria pras quentes (usei DTS pra passar os campos já consistidos com ActiveX Script task )...mas pode ser feito tudo na mesma proc.
Abraços
Abraços
Responder
03/12/2004
Laertepjunior
Algo como
Create Proc usp_InsereTxt
as
-- digamos que vc criou uma tabela fria chamada TblRecebeTxt (NomeTabela varchar(20),Campo1 varchar(20),Campo2...)
--coloca teu bulk aqui inserindo todo o txt na TblRecebeTxt
--declara a variavel pra usar no cursor
declare @nometabela varchar(20)
declare @sql varchar(200)
Set @nometabela = ´´
set @sql = ´´
--Fazemos um cursor nela pra pegar os nomes das tabelas
DECLARE AndaTAbela CURSOR LOCAL FORWARD_ONLY FOR
SELECT Distinct NomeTabela
FROM TblRecebeTxt
OPEN AndaTAbela
FETCH NEXT FROM AndaTAbela
INTO @nometabela
WHILE @@FETCH_STATUS = 0
BEGIN
set @sql = ´insert into ´ + @nometabela + ´(Campo1,Campo2) select Campo1,Campo2 from TblRecebeTxt where nometabela = ´´´ + @nometabela + ´´´´
exec (@sql)
FETCH NEXT FROM AndaTAbela
INTO @nometabela
END
Close AndaTabela
Deallocate AndaTabela
Só dar umas garabadinhas nela pra sua necessidade..
Abraços
Create Proc usp_InsereTxt
as
-- digamos que vc criou uma tabela fria chamada TblRecebeTxt (NomeTabela varchar(20),Campo1 varchar(20),Campo2...)
--coloca teu bulk aqui inserindo todo o txt na TblRecebeTxt
--declara a variavel pra usar no cursor
declare @nometabela varchar(20)
declare @sql varchar(200)
Set @nometabela = ´´
set @sql = ´´
--Fazemos um cursor nela pra pegar os nomes das tabelas
DECLARE AndaTAbela CURSOR LOCAL FORWARD_ONLY FOR
SELECT Distinct NomeTabela
FROM TblRecebeTxt
OPEN AndaTAbela
FETCH NEXT FROM AndaTAbela
INTO @nometabela
WHILE @@FETCH_STATUS = 0
BEGIN
set @sql = ´insert into ´ + @nometabela + ´(Campo1,Campo2) select Campo1,Campo2 from TblRecebeTxt where nometabela = ´´´ + @nometabela + ´´´´
exec (@sql)
FETCH NEXT FROM AndaTAbela
INTO @nometabela
END
Close AndaTabela
Deallocate AndaTabela
Só dar umas garabadinhas nela pra sua necessidade..
Abraços
Responder
Clique aqui para fazer login e interagir na Comunidade :)