Arquivos de formato (format file) no SQL Server

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (1)  (1)

Nessa dica o Agnaldo mostra a estrutura de um format file nonXML e como geramos o mesmo a partir de um utilitário de linha de comando: o bcp

Arquivos de formato (format file) no SQL Server

Primeiro: o que é um format file?

É um arquivo que contém a estrutura dos dados armazenados em um flat file.

Ops… o que é um flat file?

É um arquivo onde os dados não seguem uma estrutura relacional - seguem uma estrutura posicional.

Um exemplo (parcial) de um flat file é:


441@ADAPTADOR BLUETOOTH ENCORE CLASS 2@110.00
311@ADAPTADOR RCA 2F / 2F@1.00
500@ADAPTADOR UHF@25.00
528@ADAPTADOR USB G WIRELESS KAIOMY@99.00
134@ADAPTADOR VHSC / VHS ELETRICO@49.00
510@ADAPTADOR WIRELESS USB G ENCORE@100.00
51@APLICADOR ETIQUETA CD CARD PIMACO@13.00

O que podemos deduzir a partir desse fragmento de arquivo? Que contém produtos. Que cada linha representa um produto diferente. Que a primeira coluna talvez represente o código do produto. Que a segunda coluna é o nome do produto. Que a terceira coluna (talvez) representa o preço do produto. Que o símbolo [@] separa uma coluna da outra.

OK… para isso é que existe a documentação de sistemas. Mas deduzimos corretamente, dessa vez.

E como eu “falo” para o SQL Server que ele deve usar o arroba, que o arquivo tem três colunas? Usando o format file.

Podemos gerar um format file em formato XML ou texto (nonXML).

No exemplo abaixo, crio um arquivo de formato a partir da tabela de produtos (do database criado com o script que está neste post), usando um aplicativo de prompt chamado BCP (bulk copy program). Para usá-lo, abra o prompt de comando (DOS), digite o comando e dê um [ENTER].

BCP EXEMPLO_COPIA..PRODUTO FORMAT NUL -c -t\t -f produtosTab.fmt -T

O arquivo gerado tem o seguinte conteúdo:

9.0
3
1       SQLCHAR       0       12      “\t”     1     COD            “”
2       SQLCHAR       0       50      “\t”     2     NOME           SQL_Latin1_General_CP1_CI_AS
3       SQLCHAR       0       41      “\r\n”   3    PRECO          “”

Onde:

  • A primeira linha contém a versão do bcp usado (9.0 = SQL SERVER 2005);
  • a segunda linha contém a quantidade de colunas do flat file;
  • a partir daí, temos a definição das características de cada coluna, uma por linha:
    • a primeira coluna representa a ordem da coluna no arquivo flat;
    • a segunda coluna representa o tipo do dado (se o flat file estiver em formato caractere, usamos sempre o SQL CHAR - se estiver em formato nativo, usamos os tipos do SQL Server;
    • a terceira coluna representa o offset;
    • a quarta informa o tamanho máximo da coluna;
    • a quinta, o separador;
    • a sexta contém a ordem da coluna no destino - o número 0 informa que não queremos importar essa coluna;
    • a sétima coluna contém o nome do campo;
    • a oitava coluna contém o collation do campo (para campos texto, claro).
 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?