Arquivos de formato para importação ou exportação de dados (SQL Server)

Na importação de dados em massa para uma tabela do SQL Server ou na exportação em massa de dados de uma tabela, você pode usar um arquivo de formato para armazenar todas as informações necessárias para exportar ou importar dados em massa. Isso inclui informações de formato para cada campo em um arquivo de dados relativo para essa tabela.

O SQL Server 2012 oferece suporte a dois tipos de arquivos de formato: arquivos de formato XML e não XML. Os arquivos de formato XML e não XML contêm descrições de cada campo de um arquivo de dados, e arquivos de formato XML também contêm descrições das colunas das tabelas correspondentes. Geralmente, arquivos de formato XML e não XML são intercambiáveis. Entretanto, recomendamos que você use a sintaxe XML para novos arquivos de formato porque eles fornecem várias vantagens com relação aos arquivos de formato não XML. Para obter mais informações, consulte Arquivos de formato XML (SQL Server).

Neste tópico:

  • Benefícios de arquivos de formato

  • Exemplos de arquivos de formato

  • Quando um arquivo de formato é necessário?

  • Tarefas relacionadas

Benefícios de arquivos de formato

  • Fornece um sistema flexível para gravar arquivos de dados que exigem pouca ou nenhuma edição para estar em conformidade com outros formatos de dados ou para ler arquivos de dados de outro software.

  • Habilita-o a importar dados em massa sem precisar adicionar ou excluir dados desnecessários, nem reordenar dados existentes no arquivo de dados. Os arquivos de formato são particularmente úteis quando existe uma incompatibilidade entre campos no arquivo de dados e as colunas na tabela.

Exemplos de arquivos de formato

Os exemplos abaixo mostram o layout de um arquivo de formato não XML e de um arquivo de formato XML. Esses arquivos de formato correspondem à tabela HumanResources.myTeam no banco de dados de exemplo AdventureWorks2012 . Essa tabela contém quatro colunas: EmployeeID, Name, Title e ModifiedDate.

ObservaçãoObservação

Para obter informações sobre essa tabela e sobre como criá-la, consulte Tabela de exemplo HumanResources.myTeam (SQL Server).

A.Usando um arquivo de formato não XML

O arquivo de formato não XML seguinte usa o formato de dados nativo do SQL Server para a tabela HumanResources.myTeam. Esse arquivo de formato foi criado usando o comando bcp a seguir.

bcp AdventureWorks.HumanResources.myTeam format nul -f myTeam.Fmt -n -T 
The contents of this format file are as follows: 9.0
4
1       SQLSMALLINT   0       2       ""   1     EmployeeID               ""
2       SQLNCHAR      2       100     ""   2     Name                     SQL_Latin1_General_CP1_CI_AS
3       SQLNCHAR      2       100     ""   3     Title                    SQL_Latin1_General_CP1_CI_AS
4       SQLNCHAR      2       100     ""   4     Background               SQL_Latin1_General_CP1_CI_AS

Para obter mais informações, consulte Arquivos de formato não XML (SQL Server).

[Início]

B.Usando um arquivo de formato XML

O seguinte arquivo de formato XML usa o formato de dados nativo do SQL Server para a tabela HumanResources.myTeam. Esse arquivo de formato foi criado usando o comando bcp a seguir.

bcp AdventureWorks.HumanResources.myTeam format nul -f myTeam.Xml -x -n -T 

O arquivo de formato contém:

 <?xml version="1.0"?>
<BCPFORMAT xmlns="https://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="NativePrefix" LENGTH="1"/>
  <FIELD ID="2" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="NCharPrefix" PREFIX_LENGTH="2" MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="EmployeeID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="Title" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="Background" xsi:type="SQLNVARCHAR"/>
 </ROW>
</BCPFORMAT>

Para obter mais informações, consulte Arquivos de formato XML (SQL Server).

[Início]

Quando um arquivo de formato é necessário?

Uma instrução INSERT... A instrução SELECT * FROM OPENROWSET (BULK...) sempre requer um arquivo de formato.

  • Para bcp ou BULK INSERT, em situações simples, usar um arquivo de formato é opcional e raramente necessário. No entanto, em situações complexas de importação em massa, um arquivo de formato é frequentemente necessário.

Os arquivos de formato serão necessários se:

  • O mesmo arquivo de dados for usado como origem para diversas tabelas que têm esquemas diferentes.

  • O arquivo de dados tiver um número diferente de campos do número de colunas da tabela de destino; por exemplo:

    • A tabela de destino contém pelo menos uma coluna para a qual há um valor padrão definido ou é permitido NULL.

    • Os usuários não têm permissões SELECT/INSERT em uma ou mais colunas na tabela.

    • Um único arquivo de dados é usado com duas ou mais tabelas que têm esquemas diferentes.

  • A ordem de colunas é diferente para o arquivo de dados e a tabela.

  • Os caracteres de terminação ou o comprimento dos prefixos diferem entre as colunas do arquivo de dados.

ObservaçãoObservação

Na ausência de um arquivo de formato, se um comando bcp especificar uma opção de formato de dados (-n, -c, -w ou -N) ou uma operação BULK INSERT especificar a opção DATAFILETYPE, o formato de dados especificado será usado como o método padrão de interpretação dos campos do arquivo de dados.

[Início]

Tarefas relacionadas

[Início]

Consulte também

Conceitos

Arquivos de formato não XML (SQL Server)

Arquivos de formato XML (SQL Server)

Formatos de dados para importar ou exportar em massa (SQL Server)