Partilhar via


Criar um ficheiro de formatação com bcp (SQL Server)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada SQL do Azure do Azure Synapse AnalyticsAnalytics Platform System (PDW)

Este artigo descreve como usar a utilidade bcp para criar um ficheiro de formato para uma tabela específica. O ficheiro de formato baseia-se na opção de tipo de dado especificada (-n, -c, -w, ou -N) e nos delimitadores de tabela ou vista.

Quando importa em massa para uma tabela SQL Server ou exporta dados em massa de uma tabela, pode usar um ficheiro de formato como um sistema flexível para escrever ficheiros de dados. Os ficheiros de formato requerem pouca ou nenhuma edição para cumprir outros formatos de dados, ou para ler ficheiros de dados de outros programas de software.

Limitações

A versão da utilidade bcp (bcp.exe) usada para ler um ficheiro de formato deve ser a mesma ou posterior à versão usada para criar o ficheiro de formatação. Por exemplo, o SQL Server 2016 (13.x) bcp pode ler um ficheiro de formato versão 12.0, que é gerado pelo SQL Server 2014 (12.x) bcp, mas o SQL Server 2014 (12.x) bcp não consegue ler um ficheiro de formato versão 13.0, que é gerado pelo SQL Server 2016 (13.x) bcp.

Observação

Esta sintaxe, incluindo a inserção em massa, não é suportada no Azure Synapse Analytics. No Azure Synapse Analytics e em outras integrações de plataforma de banco de dados em nuvem, efetue a movimentação de dados através da instrução COPY no Azure Data Factory, ou usando instruções T-SQL, como COPY INTO e PolyBase.

Criar arquivos de formato

O SQL Server suporta dois tipos de ficheiro de formato: formato não XML e formato XML. O formato não-XML é o formato original suportado pelas versões anteriores do SQL Server.

Geralmente, ficheiros XML e não XML são intercambiáveis. No entanto, recomendamos que utilize sintaxe XML para ficheiros de formato, pois oferecem várias vantagens em relação a ficheiros que não são de formato XML.

Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que pode ser descarregado da página inicial de Exemplos e Projetos da Comunidade do Microsoft SQL Server. A Adventure Works Cycles é uma empresa de fabrico fictícia usada para demonstrar conceitos e cenários de bases de dados.

Criar um arquivo de formato XML

Para usar um comando bcp para criar um ficheiro de formatação, especifique o format argumento e use nul em vez de um caminho de ficheiro de dados. A opção format requer sempre a opção -f, e para criar um ficheiro em formato XML, deve também especificar a opção -x, por exemplo, bcp <table_or_view> format nul -f <format_file_name> -x.

Para distinguir um ficheiro em formato XML, recomendamos que use .xml como extensão do nome do ficheiro, por exemplo, MyTable.xml.

Para informações sobre a estrutura e os campos dos ficheiros de formato XML, consulte Ficheiros de Formato XML (SQL Server).

Examples

Esta secção contém os seguintes exemplos que mostram como usar comandos bcp para criar um ficheiro em formato XML. A HumanResources.Department tabela contém quatro colunas: DepartmentID, Name, GroupName, e ModifiedDate.

A. Criar um ficheiro de formato XML para dados de caracteres

O exemplo seguinte cria um ficheiro de formato XML, Department.xml, para a HumanResources.Department tabela. O ficheiro de formato utiliza formatos de dados de caracteres e um terminador de campo não padrão (,). O conteúdo do ficheiro de formato gerado é apresentado após o comando.

O comando bcp contém os seguintes qualificativos.

Qualificações Description
format nul -x -f <format_file> Especifica o ficheiro de formato XML.
-c Especifica informação de caracteres.
-t, Especifica uma vírgula (,) como terminador de campo.

Nota: Se o ficheiro de dados usar o terminador de campo padrão (\t), o comutador -t é desnecessário.
-T Especifica que o utilitário bcp se conecta ao SQL Server com uma conexão confiável usando segurança integrada. Se -T não for especificado, deve especificar -U e -P para conseguir iniciar sessão com sucesso.

No prompt de comandos do Windows, introduza o seguinte bcp comando:

bcp AdventureWorks2022.HumanResources.Department format nul -c -x -f Department-c.xml -t, -T

O ficheiro de formato gerado, Department-c.xml, contém os seguintes elementos XML:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="7"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="," MAX_LENGTH="100" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="24"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>

Para informações sobre a sintaxe deste ficheiro de formato, consulte XML Format Files (SQL Server). Para informações sobre dados de caracteres, veja Usar o formato de carácter para importar ou exportar dados (SQL Server).

B. Criar um ficheiro de formato XML para dados nativos

O exemplo seguinte cria um ficheiro de formato XML, Department-n.xml, para a HumanResources.Department tabela. O ficheiro de formato utiliza tipos de dados nativos. O conteúdo do ficheiro de formato gerado é apresentado após o comando.

O comando bcp contém os seguintes qualificativos.

Qualificações Description
format nul -x -f <format_file> Especifica o ficheiro de formato XML.
-n Especifica tipos de dados nativos.
-T Especifica que o utilitário bcp se conecta ao SQL Server com uma conexão confiável usando segurança integrada. Se -T não for especificado, deve especificar -U e -P para conseguir iniciar sessão com sucesso.

No prompt de comandos do Windows, introduza o seguinte bcp comando:

bcp AdventureWorks2022.HumanResources.Department format nul -x -f Department-n.xml -n -T

O ficheiro de formato gerado, Department-n.xml, contém os seguintes elementos XML:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
  <FIELD ID="1" xsi:type="NativeFixed" LENGTH="2"/>
  <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="NativeFixed" LENGTH="8"/>
</RECORD>
<ROW>
  <COLUMN SOURCE="1" NAME="DepartmentID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="Name" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="3" NAME="GroupName" xsi:type="SQLNVARCHAR"/>
  <COLUMN SOURCE="4" NAME="ModifiedDate" xsi:type="SQLDATETIME"/>
</ROW>
</BCPFORMAT>

Para informações sobre a sintaxe deste ficheiro de formato, consulte XML Format Files (SQL Server). Para informações sobre como usar dados nativos, veja Usar formato nativo para importar ou exportar dados (SQL Server).

Mapear campos de dados para colunas de tabela

Tal como criado pelo bcp, um ficheiro de formato descreve todas as colunas da tabela por ordem. Pode modificar um ficheiro de formato para reorganizar ou omitir as linhas da tabela. Podes personalizar um ficheiro de formato para um ficheiro de dados cujos campos não correspondem diretamente às colunas da tabela. Para obter mais informações, consulte os seguintes artigos: