Compartilhar via


Usando arquivos de dados e de formato

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

O programa de cópia em massa mais simples executa estas tarefas:

  1. As chamadas bcp_init para especificar a cópia em massa (definir BCP_OUT) de uma tabela ou exibição para um arquivo de dados.

  2. Chama bcp_exec para executar a operação de cópia em massa.

O arquivo de dados é criado em modo nativo; portanto, os dados de todas as colunas na tabela ou exibição são armazenados no arquivo de dados com o mesmo formato do banco de dados. É possível executar cópia em massa de entrada do arquivo em um servidor usando essas mesmas etapas e definindo DB_IN em vez de DB_OUT. Isso só funcionará se ambas as tabelas (origem e destino) tiverem exatamente a mesma estrutura. O arquivo de dados resultante também pode ser inserido no utilitário bcp usando a opção /n (modo nativo).

Para copiar em massa o conjunto de resultados de uma instrução Transact-SQL em vez de diretamente de uma tabela ou exibição:

  1. Chame bcp_init para especificar a cópia em massa, mas especifique NULL para o nome da tabela.

  2. Chame bcp_control com eOption definido como BCPHINTS e iValue definido como um ponteiro para uma cadeia de caracteres SQLTCHAR que contém a instrução Transact-SQL.

  3. Chame bcp_exec para executar a operação de cópia em massa.

A instrução Transact-SQL pode ser qualquer instrução que gere um conjunto de resultados. O arquivo de dados é criado contendo o primeiro conjunto de resultados da instrução Transact-SQL. A cópia em massa ignorará qualquer conjunto de resultados após o primeiro se a instrução Transact-SQL gerar vários conjuntos de resultados.

Para criar um arquivo de dados no qual os dados da coluna são armazenados em um formato diferente do da tabela, chame bcp_columns para especificar quantas colunas serão alteradas e, em seguida, chame bcp_colfmt para cada coluna cujo formato você deseja alterar. Isso é feito depois de ligar para bcp_init mas antes de ligar para bcp_exec. bcp_colfmt especifica o formato no qual os dados da coluna são armazenados no arquivo de dados. Ele pode ser usado ao copiar em massa para dentro ou para fora. Você também pode usar bcp_colfmt para definir os terminadores de linha e coluna. Por exemplo, se os dados não contiverem caracteres de tabulação, você poderá criar um arquivo delimitado por tabulação usando bcp_colfmt para definir o caractere de tabulação como o terminador de cada coluna.

Ao copiar em massa e usar bcp_colfmt, você pode criar facilmente um arquivo de formato descrevendo o arquivo de dados criado chamando bcp_writefmt após a última chamada para bcp_colfmt.

Ao copiar em massa de um arquivo de dados descrito por um arquivo de formato, leia o arquivo de formato chamando bcp_readfmt após bcp_init mas antes bcp_exec.

A função bcp_control controla várias opções ao copiar em massa para o SQL Server de um arquivo de dados. bcp_control define opções, como o número máximo de erros antes do encerramento, a linha no arquivo na qual iniciar a cópia em massa, a linha a ser interrompida e o tamanho do lote.

Confira também

Executando operações de cópia em massa (ODBC)