Array
(
)

Importação de arquivo texto com bulk insert

Jorgeolimpia
   - 03 dez 2004

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...

Laertepjunior
   - 03 dez 2004

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

Laertepjunior
   - 03 dez 2004

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