Para facilitar o entendimento, vou criar um exemplo de um arquivo com três campos delimitados por “;” que devem ser carregados em uma tabela que utilizará somente dois destes campos.
Definição da Tabela:
CREATE TABLE CONTAS
(REDUZIDA VARCHAR(6),
COMPLETA VARCHAR(12));
Arquivo exemplo:
000001;Conta Teste;100020003000
000002;Conta Despesas;200020003000
000003;Conta Salários;300020003000
Para fazer a importação vou gerar um arquivo onde é especificado o formato que o arquivo texto possui e onde cada campo deve ser importado. Para facilitar utilizaremos o bcp para gerar o arquivo a partir da tabela que irá receber os campos com a seguinte instrução:
bcp database.dbo.CONTAS format nul -T –n Contas.fmt –S Servidor\Instância –U usuário –P Senha
Altere “database.dbo” pelo banco de dados e o schema onde a tabela está definida.
Este comando irá gerar um arquivo com o seguinte conteúdo:
10.0
2
1 SQLCHAR 2 6 "" 1 REDUZIDA Latin1_General_CI_AS
2 SQLCHAR 2 35 "" 2 COMPLETA Latin1_General_CI_AS
Sendo a primeira linha a versão do banco de dados.
A segunda linha indica a quantidade de campos do arquivo.
A terceira e a quarta são as definições dos campos da tabela.
Neste exemplo vamos desprezar a descrição da conta para isto será inserido uma definicação de campo antes do campo “COMPLETA”, o arquivo ficará com o seguinte conteúdo:
10.0
3
1 SQLCHAR 0 6 ";" 1 REDUZIDA Latin1_General_CI_AS
2 SQLCHAR 0 35 ";" 0 DESPREZAR Latin1_General_CI_AS
3 SQLCHAR 0 35 "\r\n" 2 COMPLETA Latin1_General_CI_AS
Alterações realizadas:
- Alterada a segunda linha para indicar que o arquivo tem três campos.
- Incluída a definição do segundo campo e indicado que a posição dele na tabela é zero, ou seja não será importado.
- Alterada a definição do campo COMPLETA para indicar que é o terceiro campo do arquivo, mantendo que ele está na segunda posição da tabela (sexta coluna do arquivo).
- Incluído o delimitador de campos “;”, que no último campo é o final de linha do arquivo.
Figura 1 |
Agora que temos o formato definido, abaixo está o comando que realiza a importação:
bcp database.dbo.CONTAS in arquivo.txt -f contas.fmt –U usuário –P senha –S servidor\instância
Este utilitário também serve para exportar os dados em arquivo texto.
Existem diversas outras opções tais como: pegar somente um pedaço do arquivo, outras formas de autenticação e utilizar arquivos de formato no padrão XML.
Nenhum comentário:
Postar um comentário