Usando arquivos de dados e de formato
O programa de cópia em massa mais simples executa estas tarefas:
Chama bcp_init para especificar a cópia em massa (definir BCP_OUT) de uma tabela ou exibição para um arquivo de dados.
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:
Chame bcp_init para especificar a cópia em massa, mas especifique NULL para o nome da tabela.
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.
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 ignora 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 de 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 chamar bcp_init mas antes de chamar 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 guia, você poderá criar um arquivo delimitado por tabulação usando bcp_colfmt para definir o caractere de guia como o terminador para cada coluna.
Ao copiar em massa e usar bcp_colfmt, você pode facilmente criar 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 de bcp_exec.
A função bcp_control controla várias opções ao copiar em massa para 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 no qual iniciar a cópia em massa, a linha para parar e o tamanho do lote.