Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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 bcp ferramenta (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 2025 (17.x) bcp pode ler um ficheiro no formato versão 16.0, gerado pelo SQL Server 2022 (16.xbcp), mas o SQL Server 2022 (16.x) bcp não consegue ler um ficheiro no formato versão 17.0, que é gerado pelo SQL Server 2025 (17.xbcp).
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 ficheiro de formatação
Para utilizar bcp para criar um ficheiro de formato, especifique o argumento format e utilize nul em vez de um caminho para um ficheiro de dados. A format opção exige sempre a -f opção.
Para criar um ficheiro de formato XML, deve especificar a -x opção, como bcp <table_or_view> format nul -f <format_file_name> -x.
Para distinguir um ficheiro em formato XML, use .xml como extensão do nome do ficheiro, por exemplo, MyTable.xml.
Para informações sobre a estrutura e os campos dos ficheiros em formato XML, consulte ficheiros em formato XML.
Examples
Esta secção contém exemplos que mostram como usar bcp para criar um ficheiro de formatação. A HumanResources.Department tabela contém quatro colunas: DepartmentID, Name, GroupName, e ModifiedDate.
A. Criar um ficheiro de formato para dados de carácter
O exemplo seguinte cria um ficheiro de formato para a HumanResources.Department tabela usando formatos de dados de caracteres.
Crie um ficheiro de formato XML chamado Department-c.xml. O ficheiro de formatação utiliza um terminador de campo não padrão (,). A secção seguinte mostra o conteúdo do ficheiro de formato gerado.
O bcp comando 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 bcp se liga ao SQL Server com uma ligação de confiança usando segurança integrada. Se não especificar -T, deve especificar -U e -P para iniciar sessão com sucesso. |
No prompt de comandos do Windows, introduza o seguinte bcp comando:
bcp AdventureWorks2025.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, veja ficheiros de formato XML. Para informações sobre dados de caracteres, consulte Usar formato de carácter para importar ou exportar dados.
B. Criar um ficheiro de formato para dados nativos
O exemplo seguinte cria um ficheiro de formato para a HumanResources.Department tabela usando tipos de dados nativos.
Crie um ficheiro de formato XML chamado Department-n.xml. A secção seguinte mostra o conteúdo do ficheiro de formato gerado.
O bcp comando 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 bcp se liga ao SQL Server com uma ligação de confiança usando segurança integrada. Se não especificar -T, deve especificar -U e -P para iniciar sessão com sucesso. |
No prompt de comandos do Windows, introduza o seguinte bcp comando:
bcp AdventureWorks2025.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, veja ficheiros de formato XML. Para informações sobre como usar dados nativos, consulte Usar formato nativo para importar ou exportar dados.
C. Criar um ficheiro de formato não XML para dados nativos Unicode
Para criar um ficheiro de formato não XML para dados nativos Unicode para a HumanResources.Department tabela, use o seguinte comando:
bcp AdventureWorks2025.HumanResources.Department format nul -T -N -f Department-n.fmt
Para mais informações sobre como usar dados nativos Unicode, consulte Usar Formato Nativo Unicode para Importar ou Exportar Dados.
D. Criar um ficheiro de formato não XML para dados de caracteres Unicode
Para criar um ficheiro de formato não XML para dados de caracteres Unicode para a HumanResources.Department tabela que usa terminadores predefinidos, use o seguinte comando:
bcp AdventureWorks2025.HumanResources.Department format nul -T -w -f Department-w.fmt
Para mais informações sobre como usar dados de caracteres Unicode, consulte Usar formato de caracteres Unicode para importar ou exportar dados.
E. Use um ficheiro de formato com a opção de página de códigos
Quando crias um ficheiro de formato usando bcp format, ele escreve informação sobre a página de colação e código no ficheiro de formato.
O seguinte ficheiro de formato de exemplo, para uma tabela com cinco colunas, inclui a ordenação.
13.0
5
1 SQLCHAR 0 0 "\t" 1 c_0 Cyrillic_General_CS_AS
2 SQLCHAR 0 0 "\t" 2 c_1 Cyrillic_General_CS_AS
3 SQLCHAR 0 3000 "\t" 3 c_2 Cyrillic_General_CS_AS
4 SQLCHAR 0 5 "\t" 4 c_3 ""
5 SQLCHAR 0 41 "!!!\r\r\n" 5 c_4 ""
Se tentar importar dados para o SQL Server usando bcp in -c -C65001 -f format_file ... ou com BULK INSERTOPENROWSET ou com FORMATFILE='format_file' CODEPAGE=65001 ..., a informação de compilação ou página de código no ficheiro de formato tem prioridade sobre a opção 65001.
Portanto, se gerar um ficheiro de formatação, deve eliminar manualmente a informação de compilação do ficheiro de formato gerado antes de começar a importar dados de volta para o SQL Server.
O exemplo seguinte mostra o ficheiro de formato sem a informação de ordenação.
13.0
5
1 SQLCHAR 0 0 "\t" 1 c_0 ""
2 SQLCHAR 0 0 "\t" 2 c_1 ""
3 SQLCHAR 0 3000 "\t" 3 c_2 ""
4 SQLCHAR 0 5 "\t" 4 c_3 ""
5 SQLCHAR 0 41 "!!!\r\r\n" 5 c_4 ""
Mapear campos de dados para colunas de tabela
Um ficheiro de formato criado por bcp descreve todas as colunas da tabela por ordem. Pode modificar um ficheiro de formato para reorganizar ou omitir colunas 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:
- Use um ficheiro de formato para saltar uma coluna de tabela
- Utilize um ficheiro de formato para ignorar um campo de dados
- Utilize um ficheiro de formato para mapear colunas da tabela para campos do ficheiro de dados