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.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Instância Gerida do Azure SQL
Analytics Platform System (PDW)
Ao importar dados em massa para uma tabela do SQL Server ou exportar dados em massa de uma tabela, você pode usar um de arquivo de formato para armazenar todas as informações de formato necessárias para exportar ou importar dados em massa. Isso inclui informações de formato para cada campo em um arquivo de dados relativo a essa tabela.
O SQL Server dá suporte a dois tipos de arquivos de formato: formatos XML e arquivos de formato não XML. Tanto os arquivos de formato não-XML quanto os arquivos de formato XML contêm descrições de cada campo em um arquivo de dados, e os arquivos de formato XML também contêm descrições das colunas de tabela correspondentes. Geralmente, os arquivos de formato XML e não XML são intercambiáveis. No entanto, recomendamos que você use a sintaxe XML para novos arquivos de formato porque eles fornecem várias vantagens sobre arquivos de formato não-XML. Para mais informações, consulte os ficheiros de formato XML (SQL Server) .
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.
Benefícios dos arquivos de formato
Os arquivos de formato fornecem um sistema flexível para gravar arquivos de dados que requer pouca ou nenhuma edição para cumprir com outros formatos de dados ou para ler arquivos de dados de outro software.
Você pode importar dados em massa sem ter que adicionar ou excluir dados desnecessários ou reordenar dados existentes no arquivo de dados. Os arquivos de formato podem ser úteis quando existe uma incompatibilidade entre campos no arquivo de dados e colunas na tabela.
Exemplos de arquivos de formato
Os exemplos a seguir 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 AdventureWorks2022
. Esta tabela contém quatro colunas: EmployeeID
, Name
, Title
e ModifiedDate
.
Observação
Para obter informações sobre essa tabela e como criá-la, consulte tabela de exemplo HumanResources.myTeam (SQL Server).
Um. Usar um arquivo de formato não XML
O seguinte arquivo de formato não XML usa o formato de dados nativo do SQL Server para a tabela HumanResources.myTeam
. Esse arquivo de formato foi criado usando o seguinte comando bcp
.
bcp AdventureWorks2022.HumanResources.myTeam format nul -f myTeam.Fmt -n -T
O comando bcp
assume como padrão uma instância local padrão do SQL Server com Autenticação do Windows. Você pode especificar outras informações de instância e login conforme desejado, para obter mais informações, consulte bcp Utility. Por exemplo, para especificar uma instância nomeada de servidor remoto com Autenticação do Windows, use:
bcp AdventureWorks2022.HumanResources.myTeam format nul -f myTeam.Fmt -n -T -S servername/instancename
O conteúdo desse arquivo de formato é o seguinte, começando com o número da versão principal do SQL Server e as informações de metadados da tabela.
14.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 Usar arquivos de formato não XML (SQL Server).
B. Usar 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 seguinte comando bcp
.
bcp AdventureWorks2022.HumanResources.myTeam format nul -f myTeam.xml -x -n -T
O ficheiro de formato contém:
<?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="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 ficheiros de formato XML (SQL Server).
Quando é necessário um ficheiro de formato?
Os arquivos de formato geralmente são necessários nas seguintes circunstâncias:
Quando você usa uma instrução
INSERT ... SELECT * FROM OPENROWSET(BULK...)
.Para situações complexas de importação em massa utilizando bcp ou
BULK INSERT
.O mesmo arquivo de dados é usado como fonte para várias tabelas que têm esquemas diferentes.
O arquivo de dados tem um número diferente de campos do que a tabela de destino tem de colunas, por exemplo:
- A tabela de destino contém pelo menos uma coluna para a qual um valor padrão é definido ou
NULL
é permitido. - Os usuários não têm permissões de
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 tabela de destino contém pelo menos uma coluna para a qual um valor padrão é definido ou
A ordem das colunas é diferente para o arquivo de dados e a tabela.
Os caracteres de terminação ou comprimentos de prefixo diferem entre as colunas do arquivo de dados.
Observaçã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.
Tarefas relacionadas
- Usando o arquivo nativo/formato BCP vs arquivo de texto e o BOM
- Usar arquivos de formato não XML (SQL Server)
- arquivos de formato XML (SQL Server)
- Formatos de dados para importação ou exportação em massa (SQL Server)
- Criar um arquivo de formato com bcp (SQL Server)
Conteúdo relacionado
- Utilitário bcp
- Usar um arquivo de formato para importar dados em massa (SQL Server)
- Usar um arquivo Format para ignorar uma coluna de tabela (SQL Server)
- Usar um arquivo de formato para ignorar um campo de dados (SQL Server)
- Usar um arquivo de formato para mapear colunas de tabela para campos de arquivo de dados (SQL Server)