Imagine que voce tem um arquivo texto, delimitado por ponto-e-virgula (um CSV) e voce deseja inseri-lo diretamente dentro de uma tabela. Porem, eu nao vou mostrar como fazer isso no Management Studio, que e facil. Eu vou mostrar como fazer isso via T-SQL! E porque? Bom, para mim isto foi muito util para automatizar uma rotina de comunicacao entre sistemas, rodando automaticamente. Vamos entao para a parte pratica. E muito simples, primeiro analise o arquivo texto a ser importado, e identifique todas as colunas do arquivo com seu respectivo tipo de dado (data, texto, numero, money, decimal, etc). E muito importante este trabalho de analise, pois sera necessario criar uma tabela exatamente com as mesmas especificacoes. Vamos ver um exemplo, lancamentos contabeis. Eu tenho aqui um arquivo texto, delimitado por virgulas gerado a partir de um sistema ERP tosco em que a contabilidade nao funciona, e nos precisavamos importar para um que funcionasse, de fato, porem em SQL Server. Este tipo de coisa sempre surge no meu dia a dia, a quantidade de sistemas e a necessidade de comunicacao entre eles tem crescido exponencialmente. Uma sugestao e que sempre (quando possivel) abra o arquivo no excel, estude a estrutura das colunas e seus valores, veja se nao existem coisas que podem impactar na sua importacao (como por exemplo aspas simples , arquivo delimitado por ponto e virgula e o infeliz usar ponto-e-virgula na observacao do lancamento e o sistema nao tratar isso) entre outras coisas... o excel ajuda muito, nomeie as colunas, insira observacoes, planeje, para depois partir para parte pratica. *desculpem pela formatacao do blog, estou revendo este layout para permitir inserir grandes imagens... Vamos olhar o arquivo: Entao temos algum punhado de colunas, algumas DATETIME compativel com SQL Server, outros valores texto e money, e assim por diante. Para que possamos executar esta tarefa diretamente via T-SQL, e necessario criar a tabela com precisao, para que nao ocorram erros de importacao, que podem comprometer a qualidade da ferramenta desenvolvida. Para o exemplo acima, eu criei a seguinte tabela: CREATE TABLE [dbo].[ctb_movimento_202011]( [Coluna 0] bigint NULL, [Coluna 1] bigint NULL, [Coluna 2] bigint NULL, [Coluna 3] datetime NULL, [Coluna 4] varchar(10) NULL, [Coluna 5] varchar(500) NULL, [Coluna 6] varchar(1) NULL, [Coluna 7] money NULL, [Coluna 8] bigint NULL, [Coluna 9] varchar(50) NULL, [Coluna 10] bigint NULL, [Coluna 11] varchar(1) NULL, [Coluna 12] bigint NULL, [Coluna 13] bigint NULL, [Coluna 14] bigint NULL, [Coluna 15] bigint NULL, [Coluna 16] bigint NULL, [Coluna 17] bigint NULL, [Coluna 18] bigint NULL, [Coluna 19] bigint NULL, [Coluna 20] bigint NULL ) Coisas de programador... coloquei estes nomes de coluna por que previamente havia feito o mapeamento em outra ferramenta (excel). Enfim, a parte pratica. Para importar o arquivo, basta utilizar uma ferramenta muito util, chamada BULK INSERT (inclusive, muito mais ampla do que este simples exemplo). Bulk significa grande volume, e Insert e inserir. Entao vamos inserir um grande volume de dados em uma tabela. Vamos fazer um unico exemplo, porem acredito que seja o mais comum deste tipo de aplicacao, o arquivo delimitado por