Conectando com bcp
O utilitário bcp está disponível com o Microsoft ODBC Driver for SQL Server em Linux e macOS. Esta página documenta as diferenças da versão Windows do bcp.
O terminador de campo é um tab (“\t”).
O terminador de linha é um newline (“\n”).
O modo de caractere é o formato preferencial para arquivos de formato
bcp
e de dados que não contenham caracteres estendidos.
Observação
Uma barra invertida ‘\’ em um argumento de linha de comando deve ser colocada entre aspas ou usar caractere de escape. Por exemplo, para especificar uma nova linha como um terminador de linha personalizado, você deve usar um dos seguintes mecanismos:
- -r\\n
- -r"\n"
- -r'\n'
A seguir está um exemplo de invocação de comando bcp
para copiar linhas da tabela para um arquivo de texto:
bcp AdventureWorks2008R2.Person.Address out test.dat -Usa -Pxxxx -Sxxx.xxx.xxx.xxx
Opções disponíveis
Na versão atual, as seguintes sintaxes e opções estão disponíveis:
[database.]schema.table in data_file | out data_file
-a packet_size
Especifica o número de bytes por pacote de rede enviado de e para o servidor.
-b batch_size
Especifica o número de linhas por lote de dados importados.
-c
Usa um tipo de dados de caractere
-d database_name
Especifica o banco de dados que deve ser conectado.
-D
Faz com que o valor passado para a opção -S do bcp
seja interpretada como um nome da fonte de dados (DSN). Para obter mais informações, consulte "Suporte para SN em sqlcmd e bcp" em Como conectar-se com sqlcmd.
-e error_file
Especifica o caminho completo de um arquivo de erro usado para armazenar as linhas que o utilitário bcp
não puder transferir do arquivo para o banco de dados.
-E
Usa um valor ou valores de identidade no arquivo de dados importados para a coluna de identidade.
-f format_file
Especifica o caminho completo de um arquivo de formato.
-F first_row
Especifica o número da primeira linha que deve ser exportada de uma tabela ou importada de um arquivo de dados.
-G
Essa opção é usada pelo cliente ao se conectar ao Banco de Dados SQL do Azure ou o Azure Synapse Analytics para especificar que o usuário seja autenticado usando a autenticação do Microsoft Entra ID. Ele pode ser combinado apenas com a opção -P para usar a autenticação do token de acesso (v17.8+). A opção -G exige, no mínimo, a versão 17.6 do bcp. Para determinar a versão, execute bcp -v.
Importante
Este artigo se aplica ao Banco de Dados SQL do Azure, à Instância Gerenciada de SQL e ao Azure Synapse Analytics. A Autenticação Integrada do AAD não é compatível com o Linux nem com o macOS. A Autenticação Integrada do Microsoft Entra requer o Microsoft ODBC Driver 17 for SQL Server versão 17.6.1 ou posterior e um ambiente Kerberos configurado corretamente.
-k
Especifica que colunas vazias devem manter um valor nulo durante a operação, em vez de qualquer valor padrão nas colunas inseridas.
-l
Especifica um tempo limite de logon. A opção -l especifica o número de segundos antes que um logon em SQL Server expire quando você tentar se conectar a um servidor. O tempo limite de logon padrão é de 15 segundos. O tempo limite do logon deve ser um número entre 0 e 65534. Se o valor fornecido não for numérico ou não estiver nesse intervalo, bcp
gerará uma mensagem de erro. Um valor de 0 especifica um tempo limite infinito.
-L last_row
Especifica o número da última linha a ser exportada de uma tabela ou importada de um arquivo de dados.
-m max_errors
Especifica o número máximo de erros de sintaxe que podem ocorrer antes da operação bcp
ser cancelada.
-n
Usa os tipos de dados nativos (banco de dados) dos dados para realizar uma operação de cópia em massa.
-P password
Especifica a senha para a ID de logon. Quando usado com a opção -G sem -U, especifica um arquivo que contém um token de acesso (v17.8+). O arquivo de token deve estar no formato UTF-16LE (sem BOM).
Tokens de acesso podem ser obtidos por meio de vários métodos. É importante garantir que o token de acesso seja um byte para byte correto, pois ele será enviado no estado em que se encontra. Confira abaixo um comando de exemplo que obtém um token de acesso. O comando usa os comandos da CLI do Azure e Linux e salva-os em um arquivo no formato adequado. Caso a codificação padrão do sistema ou do terminal não seja ASCII ou UTF-8, talvez seja necessário ajustar as opções iconv
. Garanta a proteção cuidadosa do arquivo resultante e exclua-o quando não for mais necessário.
az account get-access-token --resource https://database.windows.net --output tsv | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
-q
Executa a instrução SET QUOTED_IDENTIFIER ON na conexão entre o utilitário bcp
e uma instância do SQL Server.
-r row_terminator
Especifica o terminador de linha.
-R
Especifica que dados de moeda, data e horário são copiados em massa no SQL Server usando o formato regional definido para as configurações de localidade do computador cliente.
-S server
Especifica o nome da instância de SQL Server à qual se conectar ou, se -D é usado, um DSN.
-t field_terminator
Especifica o terminador de campo.
-T
Especifica que o utilitário bcp
se conecta ao SQL Server com uma conexão confiável (segurança integrada).
-u
Confiar no certificado do servidor. (disponível desde a versão 18 do bcp
)
-U login_id
Especifica a ID de logon usada para conectar-se ao SQL Server.
-v
Informa o número de versão e copyright do utilitário bcp
.
-w
Executa a operação de cópia em massa usando caracteres Unicode.
Nesta versão, há suporte para caracteres Latin-1 e UTF-16.
-Y[s|m|o]
Especifica o modo de criptografia de conexão. As opções são Estrito, Obrigatório e Opcional. O uso de -Y sem parâmetros utiliza o modo de criptografia Obrigatório e é equivalente a -Ym. (disponível desde a versão 18 do bcp
)
Opções não disponíveis
Na versão atual, as seguintes sintaxes e opções não estão disponíveis:
-C
Especifica a página de código dos dados no arquivo de dados.
-h hint
Especifica as dicas usadas durante uma importação de dados em massa para uma tabela ou exibição.
-i input_file
Especifica o nome de um arquivo de resposta.
-N
Usa os tipos de dados nativos (do banco de dados) dos dados para dados de não caractere e caracteres Unicode para dados de caractere.
-o output_file
Especifica o nome de um arquivo que recebe a saída redirecionada do prompt de comando.
-V (80 | 90 | 100)
Usa tipos de dados de uma versão anterior do SQL Server.
-x
Usado com as opções format e -f format_file, gera um arquivo em formato baseado em XML, em vez do arquivo em formato não XML padrão.