Utilitário bcpbcp Utility

ESTE TÓPICO APLICA-SE A: simSQL Server (a partir de 2008)simBanco de Dados SQL do Microsoft AzuresimAzure SQL Data Warehouse simParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Para conteúdo relacionado a versões anteriores do SQL Server, consulte utilitário bcp.For content related to previous versions of SQL Server, see bcp Utility.

O utilitário bcp( bulk copyprogram) copia dados em massa entre uma instância do MicrosoftMicrosoft SQL ServerSQL Server e um arquivo de dados em um formato especificado pelo usuário.The bulk copy program utility (bcp) bulk copies data between an instance of MicrosoftMicrosoft SQL ServerSQL Server and a data file in a user-specified format. O utilitário bcp pode ser usado para importar grande número de novas linhas para tabelas do SQL ServerSQL Server ou para exportar dados de tabelas para arquivos de dados.The bcp utility can be used to import large numbers of new rows into SQL ServerSQL Server tables or to export data out of tables into data files. Exceto quando usado com a opção queryout , o utilitário não requer conhecimento de Transact-SQLTransact-SQL.Except when used with the queryout option, the utility requires no knowledge of Transact-SQLTransact-SQL. Para importar dados para uma tabela, você deve usar um arquivo de formato criado para aquela tabela ou entender a estrutura da tabela e os tipos de dados válidos para suas colunas.To import data into a table, you must either use a format file created for that table or understand the structure of the table and the types of data that are valid for its columns.

Ícone de link do tópico para as convenções de sintaxe que são usadas para o bcp sintaxe, consulte convenções de sintaxe do Transact-SQL ( Transact-SQL ) .Topic link icon For the syntax conventions that are used for the bcp syntax, see Transact-SQL Syntax Conventions (Transact-SQL).

Observação

Se você usar bcp para fazer backup de seus dados, crie um arquivo de formato para registrar o formato dos dados.If you use bcp to back up your data, create a format file to record the data format. Os arquivos de dadosbcp não incluem quaisquer informações de esquema ou de formato. Portanto, se uma tabela ou exibição for descartada e você não tiver um arquivo de formato, não será possível importar os dados.bcp data files do not include any schema or format information, so if a table or view is dropped and you do not have a format file, you may be unable to import the data.

SintaxeSyntax
bcp [database_name.] schema.{table_name | view_name | "query"
    {in data_file | out data_file | queryout data_file | format nul}
                                                                                                         
    [-a packet_size]
    [-b batch_size]
    [-c]
    [-C { ACP | OEM | RAW | code_page } ]
    [-d database_name]
    [-e err_file]
    [-E]
    [-f format_file]
    [-F first_row]
    [-h"hint [,...n]"]
    [-i input_file]
    [-k]
    [-K application_intent]
    [-L last_row]
    [-m max_errors]
    [-n]
    [-N]
    [-o output_file]
    [-P password]
    [-q]
    [-r row_term]
    [-R]
    [-S [server_name[\instance_name]]
    [-t field_term]
    [-T]
    [-U login_id]
    [-v]
    [-V (80 | 90 | 100 | 110 | 120 | 130 ) ]
    [-w]
    [-x]

ArgumentosArguments

data_filedata_file
É o caminho completo do arquivo de dados.Is the full path of the data file. Quando dados são importados em massa para o SQL ServerSQL Server, o arquivo de dados contém os dados a serem copiados na tabela ou exibição especificada.When data is bulk imported into SQL ServerSQL Server, the data file contains the data to be copied into the specified table or view. Quando dados são exportados em massa do SQL ServerSQL Server, o arquivo de dados contém os dados copiados da tabela ou exibição.When data is bulk exported from SQL ServerSQL Server, the data file contains the data copied from the table or view. O caminho pode ter de 1 a 255 caracteres.The path can have from 1 through 255 characters. O arquivo de dados pode conter no máximo 2^63 - 1 linhas.The data file can contain a maximum of 2^63 - 1 rows.

database_namedatabase_name
É o nome do banco de dados no qual a tabela ou exibição especificada reside.Is the name of the database in which the specified table or view resides. Se não estiver especificado, esse será o banco de dados padrão do usuário.If not specified, this is the default database for the user.

Você também pode especificar explicitamente o nome de banco de dados com d-.You can also explicitly specify the database name with d-.

in data_file | out data_file | queryout data_file | format nulin data_file | out data_file | queryout data_file | format nul
Especifica a direção da cópia em massa, do seguinte modo:Specifies the direction of the bulk copy, as follows:

  • in copia de um arquivo em uma tabela ou exibição de banco de dados.in copies from a file into the database table or view.

  • out copia da tabela ou exibição de banco de dados para um arquivo.out copies from the database table or view to a file. Se você especificar um arquivo existente, o arquivo será substituído.If you specify an existing file, the file is overwritten. Ao extrair dados, observe que o utilitário bcp representa uma cadeia de caracteres vazia como nula e uma cadeia de caracteres nula como uma cadeia de caracteres vazia.When extracting data, note that the bcp utility represents an empty string as a null and a null string as an empty string.

  • queryout copia de uma consulta e deve ser especificado somente quando você copiar dados em massa de uma consulta.queryout copies from a query and must be specified only when bulk copying data from a query.

  • format cria um arquivo de formato com base na opção especificada (-n, -c, -w, ou -N) e nos delimitadores da tabela ou da exibição.format creates a format file based on the option specified (-n, -c, -w, or -N) and the table or view delimiters. Quando você copia dados em massa, o comando bcp pode recorrer a um arquivo de formato, o que libera você da necessidade de inserir novamente as informações de formato de forma interativa.When bulk copying data, the bcp command can refer to a format file, which saves you from re-entering format information interactively. A opção format exige a opção -f; a criação de um arquivo de formato XML também exige a opção -x.The format option requires the -f option; creating an XML format file, also requires the -x option. Para obter mais informações, consulte Criar um arquivo de formato (SQL Server).For more information, see Create a Format File (SQL Server). É necessário especificar nul como o valor (format nul).You must specify nul as the value (format nul).

    ownerowner
    Corresponde ao nome do proprietário da tabela ou exibição.Is the name of the owner of the table or view. Oowner será opcional se o usuário que estiver executando a operação for o proprietário da tabela ou exibição especificada.owner is optional if the user performing the operation owns the specified table or view. Se owner não estiver especificado e o usuário que está executando a operação não for proprietário da tabela ou exibição especificada, o SQL ServerSQL Server retornará uma mensagem de erro e a operação será cancelada.If owner is not specified and the user performing the operation does not own the specified table or view, SQL ServerSQL Server returns an error message, and the operation is canceled.

" query " Is a Transact-SQLTransact-SQL query that returns a result set." query " Is a Transact-SQLTransact-SQL query that returns a result set. Se a consulta retornar vários conjuntos de resultados, somente o primeiro conjunto de resultados será copiado no arquivo de dados; os conjuntos de resultados subsequentes serão ignorados.If the query returns multiple result sets, only the first result set is copied to the data file; subsequent result sets are ignored. Coloque a consulta entre aspas duplas e qualquer coisa incorporada na consulta entre aspas simples.Use double quotation marks around the query and single quotation marks around anything embedded in the query. queryout também deve ser especificado quando você copiar dados em massa de uma consulta.queryout must also be specified when bulk copying data from a query.

A consulta pode fazer referência a um procedimento armazenado desde que todas as tabelas referenciadas no procedimento armazenado existam antes da execução da instrução bcp.The query can reference a stored procedure as long as all tables referenced inside the stored procedure exist prior to executing the bcp statement. Por exemplo, se o procedimento armazenado gerar uma tabela temporária, ocorrerá uma falha com a instrução bcp , pois a tabela temporária ficará disponível somente durante o tempo de execução e não durante o tempo de execução da instrução.For example, if the stored procedure generates a temp table, the bcp statement fails because the temp table is available only at run time and not at statement execution time. Nesse caso, considere a inserção do resultado do procedimento armazenado em uma tabela e, em seguida, use bcp para copiar os dados da tabela em um arquivo de dados.In this case, consider inserting the results of the stored procedure into a table and then use bcp to copy the data from the table into a data file.

table_nametable_name
Nome da tabela de destino ao importar dados para o SQL ServerSQL Server (in) e da tabela de origem ao exportar dados do SQL ServerSQL Server (out).Is the name of the destination table when importing data into SQL ServerSQL Server (in), and the source table when exporting data from SQL ServerSQL Server (out).

view_name view_name
Nome da exibição de destino ao copiar dados no SQL ServerSQL Server (in) e da exibição de origem ao copiar dados do SQL ServerSQL Server (out).Is the name of the destination view when copying data into SQL ServerSQL Server (in), and the source view when copying data from SQL ServerSQL Server (out). Somente as exibições nas quais todas as colunas fazem referência à mesma tabela podem ser usadas como exibições de destino.Only views in which all columns refer to the same table can be used as destination views. Para obter mais informações sobre as restrições para copiar dados em exibições, veja INSERT (Transact-SQL).For more information on the restrictions for copying data into views, see INSERT (Transact-SQL).

-a packet_size-a packet_size
Especifica o número de bytes por pacote de rede enviado de e para o servidor.Specifies the number of bytes, per network packet, sent to and from the server. Uma opção de configuração do servidor pode ser definida usando SQL Server Management StudioSQL Server Management Studio (ou o procedimento armazenado do sistema sp_configure ).A server configuration option can be set by using SQL Server Management StudioSQL Server Management Studio (or the sp_configure system stored procedure). Contudo, a opção de configuração do servidor pode ser substituída individualmente usando-se esta opção.However, the server configuration option can be overridden on an individual basis by using this option. packet_size pode estar entre 4096 a 65535 bytes, sendo 4096 o padrão.packet_size can be from 4096 to 65535 bytes; the default is 4096.

Um tamanho de pacote maior pode aumentar o desempenho de operações de cópia em massa.Increased packet size can enhance performance of bulk-copy operations. Se um pacote maior for pedido mas não puder ser concedido, o padrão será usado.If a larger packet is requested but cannot be granted, the default is used. As estatísticas de desempenho geradas pelo utilitário bcp mostram o tamanho de pacote usado.The performance statistics generated by the bcp utility show the packet size used.

-b batch_size-b batch_size
Especifica o número de linhas por lote de dados importados.Specifies the number of rows per batch of imported data. Cada lote é importado e registrado como uma transação separada que importa o lote inteiro antes de ser confirmado.Each batch is imported and logged as a separate transaction that imports the whole batch before being committed. Por padrão, todas as linhas no arquivo de dados são importadas como um lote.By default, all the rows in the data file are imported as one batch. Para distribuir as linhas entre vários lotes, especifique um batch_size que seja menor do que o número de linhas no arquivo de dados.To distribute the rows among multiple batches, specify a batch_size that is smaller than the number of rows in the data file. Se a transação apresentar falha para qualquer lote, só serão revertidas as inserções do lote atual.If the transaction for any batch fails, only insertions from the current batch are rolled back. Lotes já importados por transações confirmadas não serão afetados por uma falha posterior.Batches already imported by committed transactions are unaffected by a later failure.

Não use essa opção junto com a opção -h "ROWS_PER_BATCH =bb" .Do not use this option in conjunction with the -h "ROWS_PER_BATCH =bb" option.

-c-c
Executa a operação usando um tipo de dados de caractere.Performs the operation using a character data type. Essa opção não solicita informações para cada campo; ela usa char como o tipo de armazenamento, sem prefixos e com \t (caractere de tabulação) como separador de campos e \r\n (caractere de nova linha) como terminador de linha.This option does not prompt for each field; it uses char as the storage type, without prefixes and with \t (tab character) as the field separator and \r\n (newline character) as the row terminator. -c não é compatível com -w.-c is not compatible with -w.

Para obter mais informações, veja Usar o formato de caractere para importar ou exportar dados (SQL Server).For more information, see Use Character Format to Import or Export Data (SQL Server).

-C { ACP | OEM | RAW | code_page } -C { ACP | OEM | RAW | code_page }
Especifica a página de código dos dados no arquivo de dados.Specifies the code page of the data in the data file. code_page só será relevante se os dados contiverem colunas char, varcharou text com valores de caractere maiores que 127 ou menores que 32.code_page is relevant only if the data contains char, varchar, or text columns with character values greater than 127 or less than 32.

Observação

Recomendamos a especificação de um nome de agrupamento para cada coluna em um arquivo de formato, exceto quando você quiser que a opção 65001 tenha prioridade sobre a especificação de agrupamento/página de código.We recommend specifying a collation name for each column in a format file, except when you want the 65001 option to have priority over the collation/code page specification.

Valor da página de códigoCode page value DescriçãoDescription
ACPACP ANSIANSI/Microsoft Windows (ISO 1252)./Microsoft Windows (ISO 1252).
OEMOEM Página de código padrão usada pelo cliente.Default code page used by the client. Essa é a página de código padrão usada se -C não for especificado.This is the default code page used if -C is not specified.
RAWRAW Não ocorre nenhuma conversão de uma página de código para outra.No conversion from one code page to another occurs. Essa é a opção mais rápida porque não acontece nenhuma conversão.This is the fastest option because no conversion occurs.
code_pagecode_page Um número de página de código específico, por exemplo, 850.Specific code page number; for example, 850.

As versões anteriores à versão 13 ( SQL Server 2016SQL Server 2016) não dão suporte à página de código 65001 (codificação UTF-8).Versions prior to version 13 ( SQL Server 2016SQL Server 2016) do not support code page 65001 (UTF-8 encoding). As versões a partir da 13 podem importar a codificação UTF-8 para versões anteriores do SQL ServerSQL Server.Versions beginning with 13 can import UTF-8 encoding to earlier versions of SQL ServerSQL Server.

-d database_name -d database_name
Especifica o banco de dados que deve ser conectado.Specifies the database to connect to. Por padrão, bcp.exe se conecta ao banco de dados padrão do usuário.By default, bcp.exe connects to the user’s default database. Se -d database_name e um nome de três partes (database_name.schema.table, passed as the first parameter to bcp.exe) is specified, an error will occur because you cannot specify the database name twice.Se database_name começar com um hífen (-) ou uma barra (/), não adicione um espaço entre -d e o nome do banco de dados.If -d database_name and a three part name (database_name.schema.table, passed as the first parameter to bcp.exe) is specified, an error will occur because you cannot specify the database name twice.If database_name begins with a hyphen (-) or a forward slash (/), do not add a space between -d and the database name.

-e err_file-e err_file
Especifica o caminho completo de um arquivo de erro usado para armazenar as linhas que o utilitário bcp não pode transferir do arquivo para o banco de dados.Specifies the full path of an error file used to store any rows that the bcp utility cannot transfer from the file to the database. As mensagens de erro do comando bcp vão para a estação de trabalho do usuário.Error messages from the bcp command go to the workstation of the user. Se essa opção não for usada, o arquivo de erros não será criado.If this option is not used, an error file is not created.

Se err_file começar com um hífen (-) ou uma barra (/), não inclua um espaço entre -e e o valor err_file .If err_file begins with a hyphen (-) or a forward slash (/), do not include a space between -e and the err_file value.

-E -E
Especifica que o valor, ou valores, de identidade no arquivo de dados importado deve ser usado para a coluna de identidade.Specifies that identity value or values in the imported data file are to be used for the identity column. Se -E não for fornecido, os valores de identidade para essa coluna no arquivo de dados que está sendo importado serão ignorados e o SQL ServerSQL Server atribuirá automaticamente valores exclusivos com base nos valores semente e de incremento especificados durante a criação da tabela.If -E is not given, the identity values for this column in the data file being imported are ignored, and SQL ServerSQL Server automatically assigns unique values based on the seed and increment values specified during table creation.

Se o arquivo de dados não contiver valores para a coluna de identidade na tabela ou exibição, use um arquivo de formato para especificar que a coluna de identidade na tabela ou exibição deve ser ignorada ao importar dados. O SQL ServerSQL Server atribui valores exclusivos para a coluna automaticamente.If the data file does not contain values for the identity column in the table or view, use a format file to specify that the identity column in the table or view should be skipped when importing data; SQL ServerSQL Server automatically assigns unique values for the column. Para obter mais informações, veja DBCC CHECKIDENT (Transact-SQL).For more information, see DBCC CHECKIDENT (Transact-SQL).

A opção -E tem um requisito de permissões especial.The -E option has a special permissions requirement. Para obter mais informações, consulte "Comentários", mais adiante neste tópico.For more information, see "Remarks" later in this topic.

-f format_file-f format_file
Especifica o caminho completo de um arquivo de formato.Specifies the full path of a format file. O significado dessa opção depende do ambiente no qual é usada, do seguinte modo:The meaning of this option depends on the environment in which it is used, as follows:

  • Se -f for usado com a opção format , o format_file especificado será criado para a tabela ou exibição especificada.If -f is used with the format option, the specified format_file is created for the specified table or view. Para criar um arquivo de formato XML, especifique também a opção -x.To create an XML format file, also specify the -x option. Para obter mais informações, consulte Criar um arquivo de formato (SQL Server).For more information, see Create a Format File (SQL Server).

  • Se for usado com a opção in ou out, -f exigirá um arquivo de formato existente.If used with the in or out option, -f requires an existing format file.

    Observação

    O uso de um arquivo de formato com a opção in ou out é opcional.Using a format file in with the in or out option is optional. Na ausência da opção -f , se -n, -c, -w, ou -N não for especificado, o comando solicitará informações de formato e permitirá que você salve suas respostas em um arquivo de formato (cujo nome de arquivo padrão é Bcp.fmt).In the absence of the -f option, if -n, -c, -w, or -N is not specified, the command prompts for format information and lets you save your responses in a format file (whose default file name is Bcp.fmt).

    Se format_file começar com um hífen (-) ou uma barra (/), não inclua um espaço entre -f e o valor format_file .If format_file begins with a hyphen (-) or a forward slash (/), do not include a space between -f and the format_file value.

    -F first_row-F first_row
    Especifica o número da primeira linha que deve ser exportada de uma tabela ou importada de um arquivo de dados.Specifies the number of the first row to export from a table or import from a data file. Esse parâmetro requer um valor maior do que (>) 0, mas menor do que (<) ou igual ao (=) número total de linhas.This parameter requires a value greater than (>) 0 but less than (<) or equal to (=) the total number rows. Na ausência desse parâmetro, o padrão é a primeira linha do arquivo.In the absence of this parameter, the default is the first row of the file.

    first_row pode ser um inteiro positivo com um valor de até 2^63-1.first_row can be a positive integer with a value up to 2^63-1. -F first_row é baseado em 1.-F first_row is 1-based.

-h "load hints[ ,... n]" Especifica a dica ou dicas a serem usadas durante uma importação de dados em massa para uma tabela ou exibição.-h "load hints[ ,... n]" Specifies the hint or hints to be used during a bulk import of data into a table or view.

  • ORDER(column[ASC | DESC] [,...n])ORDER(column[ASC | DESC] [,...n])
    A ordem de classificação dos dados no arquivo de dados.The sort order of the data in the data file. O desempenho da importação em massa será melhorado se os dados importados forem armazenados de acordo com o índice clusterizado na tabela, se houver.Bulk import performance is improved if the data being imported is sorted according to the clustered index on the table, if any. Se o arquivo de dados for armazenado em uma ordem diferente, ou seja, distinta da ordem de uma chave de índice clusterizado, ou se não houver nenhum índice clusterizado na tabela, a cláusula ORDER será ignorada.If the data file is sorted in a different order, that is other than the order of a clustered index key, or if there is no clustered index on the table, the ORDER clause is ignored. Os nomes das colunas fornecidos devem ser nomes de colunas válidas na tabela de destino.The column names supplied must be valid column names in the destination table. Por padrão, o bcp supõe que o arquivo de dados não está classificado.By default, bcp assumes the data file is unordered. Para obter uma importação em massa otimizada, o SQL ServerSQL Server também valida que os dados importados sejam classificados.For optimized bulk import, SQL ServerSQL Server also validates that the imported data is sorted.

  • ROWS_PER_BATCH = bbROWS_PER_BATCH = bb
    Número de linhas de dados por lote (como bb).Number of rows of data per batch (as bb). É usado quando -b não é especificado, resultando no envio de todo o arquivo de dados ao servidor como uma transação única.Used when -b is not specified, resulting in the entire data file being sent to the server as a single transaction. O servidor otimiza o carregamento em massa de acordo com o valor bb.The server optimizes the bulk load according to the value bb. Por padrão, ROWS_PER_BATCH é desconhecido.By default, ROWS_PER_BATCH is unknown.

  • KILOBYTES_PER_BATCH = ccKILOBYTES_PER_BATCH = cc
    Número aproximado de kilobytes de dados por lote (como cc).Approximate number of kilobytes of data per batch (as cc). Por padrão, KILOBYTES_PER_BATCH é desconhecido.By default, KILOBYTES_PER_BATCH is unknown.

  • TABLOCKTABLOCK
    Especifica que um bloqueio no nível de tabela de atualização em massa é adquirido durante a operação de carregamento em massa, caso contrário, um bloqueio no nível de linha é adquirido.Specifies that a bulk update table-level lock is acquired for the duration of the bulk load operation; otherwise, a row-level lock is acquired. Essa dica melhora significativamente o desempenho porque manter um bloqueio durante a operação de cópia em massa reduz a contenção de bloqueios na tabela.This hint significantly improves performance because holding a lock for the duration of the bulk-copy operation reduces lock contention on the table. Uma tabela pode ser carregada simultaneamente através de vários clientes se não tiver nenhum índice e TABLOCK for especificado.A table can be loaded concurrently by multiple clients if the table has no indexes and TABLOCK is specified. Por padrão, o comportamento de bloqueio é determinado pela opção de tabela bloqueio de tabela em carregamento em massa.By default, locking behavior is determined by the table option table lock on bulk load.

    Observação

    Se a tabela de destino for um índice columnstore clusterizado, a dica TABLOCK não será necessária para carregar por vários clientes simultâneos, pois cada thread simultâneo recebe um rowgroup separado dentro do índice e carrega dados nele.If the target table is clustered columnstore index, TABLOCK hint is not required for loading by multiple concurrent clients because each concurrent thread is assigned a separate rowgroup within the index and loads data into it. Veja os tópicos conceituais sobre o índice columnstore para obter detalhes,Please refer to columnstore index conceptual topics for details,

    CHECK_CONSTRAINTSCHECK_CONSTRAINTS
    Especifica que todas as restrições na tabela ou exibição de destino devem ser verificadas durante a operação de importação em massa.Specifies that all constraints on the target table or view must be checked during the bulk-import operation. Sem a dica CHECK_CONSTRAINTS, todas as restrições CHECK e FOREIGN KEY são ignoradas e, depois da operação, a restrição na tabela é marcada como não confiável.Without the CHECK_CONSTRAINTS hint, any CHECK and FOREIGN KEY constraints are ignored, and after the operation the constraint on the table is marked as not-trusted.

    Observação

    As restrições UNIQUE, PRIMARY KEY e NOT NULL são sempre impostas.UNIQUE, PRIMARY KEY, and NOT NULL constraints are always enforced.

    Em algum momento, você precisará verificar as restrições em toda a tabela.At some point, you will need to check the constraints on the entire table. Se a tabela não estava vazia antes da operação de importação em massa, o custo de revalidação da restrição poderá exceder o custo da aplicação de restrições CHECK aos dados incrementais.If the table was nonempty before the bulk import operation, the cost of revalidating the constraint may exceed the cost of applying CHECK constraints to the incremental data. Portanto, recomendamos que normalmente você habilite a verificação de restrições durante uma importação incremental em massa.Therefore, we recommend that normally you enable constraint checking during an incremental bulk import.

    Uma situação na qual talvez você queira desabilitar as restrições (o comportamento padrão) é quando os dados de entrada contiverem linhas que violam as restrições.A situation in which you might want constraints disabled (the default behavior) is if the input data contains rows that violate constraints. Com as restrições CHECK desabilitadas, é possível importar os dados e usar instruções Transact-SQLTransact-SQL para remover os dados inválidos.With CHECK constraints disabled, you can import the data and then use Transact-SQLTransact-SQL statements to remove data that is not valid.

    Observação

    Agora, obcp impõe validação de dados e verificações de dados que podem provocar falhas em scripts se forem executados em dados inválidos em um arquivo de dados.bcp now enforces data validation and data checks that might cause scripts to fail if they are executed on invalid data in a data file.

    Observação

    A opção -m max_errors não se aplica à verificação de restrição.The -m max_errors switch does not apply to constraint checking.

  • FIRE_TRIGGERSFIRE_TRIGGERS
    Especificado com o argumento in , todos os gatilhos de inserção definidos na tabela de destino serão executados durante a operação de cópia em massa.Specified with the in argument, any insert triggers defined on the destination table will run during the bulk-copy operation. Se FIRE_TRIGGERS não for especificado, nenhum gatilho de inserção será executado.If FIRE_TRIGGERS is not specified, no insert triggers will run. FIRE_TRIGGERS é ignorado para os argumentos out, queryoute format .FIRE_TRIGGERS is ignored for the out, queryout, and format arguments.

    -i input_file-i input_file
    Especifica o nome de um arquivo de resposta que contém as respostas às perguntas do prompt de comando para cada campo de dados, quando uma cópia em massa está sendo executada com o uso do modo interativo (-n, -c, -w, ou -N não especificado).Specifies the name of a response file, containing the responses to the command prompt questions for each data field when a bulk copy is being performed using interactive mode (-n, -c, -w, or -N not specified).

    Se input_file começar com um hífen (-) ou uma barra (/), não inclua um espaço entre -i e o valor input_file .If input_file begins with a hyphen (-) or a forward slash (/), do not include a space between -i and the input_file value.

    -k-k
    Especifica que colunas vazias devem reter um valor nulo durante a operação, em vez de qualquer valor padrão nas colunas inseridas.Specifies that empty columns should retain a null value during the operation, rather than have any default values for the columns inserted. Para obter mais informações, veja Manter valores nulos ou usar os valores padrão durante a importação em massa (SQL Server).For more information, see Keep Nulls or Use Default Values During Bulk Import (SQL Server).

    -K application_intent -K application_intent
    Declara o tipo de carga de trabalho de aplicativo ao conectar-se a um servidor.Declares the application workload type when connecting to a server. O único valor possível é ReadOnly.The only value that is possible is ReadOnly. Se -K não for especificado, o utilitário bcp não dará suporte à conectividade a uma réplica secundária em um grupo de disponibilidade AlwaysOn.If -K is not specified, the bcp utility will not support connectivity to a secondary replica in an Always On availability group. Para obter mais informações, veja Secundárias ativas: réplicas secundárias legíveis (Grupos de Disponibilidade AlwaysOn).For more information, see Active Secondaries: Readable Secondary Replicas (Always On Availability Groups).

    -L last_row-L last_row
    Especifica o número da última linha a ser exportada de uma tabela ou importada de um arquivo de dados.Specifies the number of the last row to export from a table or import from a data file. Esse parâmetro exige um valor maior do que (>) 0, mas menor do que (<) ou igual ao (=) número da última linha.This parameter requires a value greater than (>) 0 but less than (<) or equal to (=) the number of the last row. Na ausência desse parâmetro, o padrão é a última linha do arquivo.In the absence of this parameter, the default is the last row of the file.

    last_row pode ser um inteiro positivo com um valor de até 2^63-1.last_row can be a positive integer with a value up to 2^63-1.

-m max_errors-m max_errors
Especifica o número máximo de erros de sintaxe que podem ocorrer antes que a operação bcp seja cancelada.Specifies the maximum number of syntax errors that can occur before the bcp operation is canceled. Um erro de sintaxe implica em um erro de conversão de dados para o tipo de dados de destino.A syntax error implies a data conversion error to the target data type. O total de max_errors exclui todos os erros que podem ser detectados apenas no servidor, como violações de restrição.The max_errors total excludes any errors that can be detected only at the server, such as constraint violations.

Uma linha que não possa ser copiada pelo utilitário bcp é ignorada e contada como um erro.A row that cannot be copied by the bcp utility is ignored and is counted as one error. Se essa opção não estiver incluída, o padrão será 10.If this option is not included, the default is 10.

Observação

A opção -m também não se aplica à conversão de tipos de dados money nem bigint .The -m option also does not apply to converting the money or bigint data types.

-n
Executa a operação de cópia em massa usando os tipos de dados nativos (banco de dados) dos dados.Performs the bulk-copy operation using the native (database) data types of the data. Essa opção não solicita informações para cada campo; ela usa os valores nativos.This option does not prompt for each field; it uses the native values.

Para obter mais informações, veja Usar o formato nativo para importar ou exportar dados (SQL Server).For more information, see Use Native Format to Import or Export Data (SQL Server).

-N-N
Executa a operação de cópia em massa usando os tipos de dados nativos (banco de dados) dos dados para dados de não caractere e caracteres Unicode para dados de caractere.Performs the bulk-copy operation using the native (database) data types of the data for noncharacter data, and Unicode characters for character data. Essa opção oferece um desempenho mais elevado como alternativa à opção -w e destina-se a ser usada para transferir dados de uma instância do SQL ServerSQL Server para outra usando um arquivo de dados.This option offers a higher performance alternative to the -w option, and is intended for transferring data from one instance of SQL ServerSQL Server to another using a data file. Ela não solicita informações para cada campo.It does not prompt for each field. Use essa opção quando estiver transferindo dados que contenham caracteres ANSI estendidos e quiser aproveitar o desempenho do modo nativo.Use this option when you are transferring data that contains ANSI extended characters and you want to take advantage of the performance of native mode.

Para obter mais informações, veja Usar o formato nativo Unicode para importar ou exportar dados (SQL Server).For more information, see Use Unicode Native Format to Import or Export Data (SQL Server).

Se você exportar e depois importar dados no mesmo esquema de tabela usando bcp.exe com -N, talvez seja exibido um aviso de truncamento, se houver uma coluna de caracteres não Unicode de tamanho fixo (por exemplo, char(10)).If you export and then import data to the same table schema by using bcp.exe with -N, you might see a truncation warning if there is a fixed length, non-Unicode character column (for example, char(10)).

O aviso pode ser ignorado.The warning can be ignored. Uma maneira de resolver este aviso é usar -n em vez de -N.One way to resolve this warning is to use -n instead of -N.

-o output_file-o output_file
Especifica o nome de um arquivo que recebe a saída redirecionada do prompt de comando.Specifies the name of a file that receives output redirected from the command prompt.

Se output_file começar com um hífen (-) ou uma barra (/), não inclua um espaço entre -o e o valor output_file .If output_file begins with a hyphen (-) or a forward slash (/), do not include a space between -o and the output_file value.

-P password-P password
Especifica a senha para a ID de logon.Specifies the password for the login ID. Se essa opção não for usada, o comando bcp solicitará uma senha.If this option is not used, the bcp command prompts for a password. Se essa opção for usada ao término do prompt de comando sem uma senha, o bcp usará a senha padrão (NULL).If this option is used at the end of the command prompt without a password, bcp uses the default password (NULL).

Importante

Não use uma senha em branco.Do not use a blank password. Use uma senha forte.Use a strong password.

Para mascarar a senha, não especifique a opção -P juntamente com a opção -U .To mask your password, do not specify the -P option along with the -U option. Em vez disso, depois de especificar o bcp junto com a opção -U e outras opções (não especificar -P), pressione ENTER e o comando solicitará uma senha.Instead, after specifying bcp along with the -U option and other switches (do not specify -P), press ENTER, and the command will prompt you for a password. Esse método garante que sua senha será mascarada quando for inserida.This method ensures that your password will be masked when it is entered.

Se password começar com um hífen (-) ou uma barra (/), não adicione um espaço entre -P e o valor password .If password begins with a hyphen (-) or a forward slash (/), do not add a space between -P and the password value.

-q-q
Executa a instrução SET QUOTED_IDENTIFIERS ON na conexão entre o utilitário bcp e uma instância do SQL ServerSQL Server.Executes the SET QUOTED_IDENTIFIERS ON statement in the connection between the bcp utility and an instance of SQL ServerSQL Server. Use essa opção para especificar um nome de banco de dados, proprietário, tabela ou exibição que contenha um espaço ou aspas simples.Use this option to specify a database, owner, table, or view name that contains a space or a single quotation mark. Inclua todo o nome da tabela de três partes ou da exibição entre aspas duplas ("").Enclose the entire three-part table or view name in quotation marks ("").

Para especificar um nome de banco de dados que contenha um espaço ou aspas simples, você deve usar a opção -q .To specify a database name that contains a space or single quotation mark, you must use the –q option.

-q não se aplica a valores passados para -d.-q does not apply to values passed to -d.

Para obter mais informações, consulte Comentários, mais adiante neste tópico.For more information, see Remarks, later in this topic.

-r row_term-r row_term
Especifica o terminador de linha.Specifies the row terminator. O padrão é \n (caractere de nova linha).The default is \n (newline character). Use esse parâmetro para substituir o terminador de linha padrão.Use this parameter to override the default row terminator. Para obter mais informações, consulte Especificar terminadores de campo e linha (SQL Server).For more information, see Specify Field and Row Terminators (SQL Server).

Se você especificar o terminador de linha em notação hexadecimal em um comando bcp.exe, o valor será truncado em 0x00.If you specify the row terminator in hexadecimal notation in a bcp.exe command, the value will be truncated at 0x00. Por exemplo, se você especificar 0x410041, 0x41 será usado.For example, if you specify 0x410041, 0x41 will be used.

Se row_term começar com um hífen (-) ou uma barra (/), não inclua um espaço entre -r e o valor row_term .If row_term begins with a hyphen (-) or a forward slash (/), do not include a space between -r and the row_term value.

-R-R
Especifica que dados de moeda, data e horário são copiados em massa no SQL ServerSQL Server usando o formato regional definido para as configurações de localidade do computador cliente.Specifies that currency, date, and time data is bulk copied into SQL ServerSQL Server using the regional format defined for the locale setting of the client computer. Por padrão, as configurações regionais são ignoradas.By default, regional settings are ignored.

-S nome_do_servidor [\instance_name] Especifica a instância do SQL ServerSQL Server ao qual se conectar.-S server_name [\instance_name] Specifies the instance of SQL ServerSQL Server to which to connect. Se nenhum servidor for especificado, o utilitário bcp se conectará à instância padrão do SQL ServerSQL Server no computador local.If no server is specified, the bcp utility connects to the default instance of SQL ServerSQL Server on the local computer. Essa opção é requerida quando um comando bcp é executado de um computador remoto na rede ou de uma instância local nomeada.This option is required when a bcp command is run from a remote computer on the network or a local named instance. Para se conectar à instância padrão do SQL ServerSQL Server em um servidor, especifique apenas server_name.To connect to the default instance of SQL ServerSQL Server on a server, specify only server_name. Para se conectar a uma instância nomeada do SQL ServerSQL Server, especifique server_name\instance_name.To connect to a named instance of SQL ServerSQL Server, specify server_name\instance_name.

-t field_term-t field_term
Especifica o terminador de campo.Specifies the field terminator. O padrão é \t (caractere de tabulação).The default is \t (tab character). Use esse parâmetro para substituir o terminador de campo padrão.Use this parameter to override the default field terminator. Para obter mais informações, consulte Especificar terminadores de campo e linha (SQL Server).For more information, see Specify Field and Row Terminators (SQL Server).

Se você especificar o terminador de campo em notação hexadecimal em um comando bcp.exe, o valor será truncado em 0x00.If you specify the field terminator in hexadecimal notation in a bcp.exe command, the value will be truncated at 0x00. Por exemplo, se você especificar 0x410041, 0x41 será usado.For example, if you specify 0x410041, 0x41 will be used.

Se field_term começar com um hífen (-) ou uma barra (/), não inclua um espaço entre -t e o valor field_term .If field_term begins with a hyphen (-) or a forward slash (/), do not include a space between -t and the field_term value.

-T-T
Especifica que o utilitário bcp se conecta ao SQL ServerSQL Server com uma conexão confiável usando segurança integrada.Specifies that the bcp utility connects to SQL ServerSQL Server with a trusted connection using integrated security. As credenciais de segurança do usuário de rede, login_ide password não são necessárias.The security credentials of the network user, login_id, and password are not required. Se -T não for especificado, será necessário especificar -U e -P para o logon ser efetuado com êxito.If –T is not specified, you need to specify –U and –P to successfully log in.

Importante

Quando o utilitário bcp estiver se conectando ao SQL ServerSQL Server com uma conexão confiável usando segurança integrada, use a opção -T (conexão confiável) em vez da combinação user name e password .When the bcp utility is connecting to SQL ServerSQL Server with a trusted connection using integrated security, use the -T option (trusted connection) instead of the user name and password combination. Quando o utilitário bcp está se conectando ao Banco de Dados SQL ou ao SQL Data Warehouse, não há suporte para o uso da autenticação do Windows ou do Azure Active Directory.When the bcp utility is connecting to SQL Database or SQL Data Warehouse, using Windows authentication or Azure Active Directory authentication is not supported. Use as opções - U e -P .Use the -U and -P options.

-U login_id-U login_id
Especifica a ID de logon usada para conectar-se ao SQL ServerSQL Server.Specifies the login ID used to connect to SQL ServerSQL Server.

Importante

Quando o utilitário bcp estiver se conectando ao SQL ServerSQL Server com uma conexão confiável usando segurança integrada, use a opção -T (conexão confiável) em vez da combinação user name e password .When the bcp utility is connecting to SQL ServerSQL Server with a trusted connection using integrated security, use the -T option (trusted connection) instead of the user name and password combination. Quando o utilitário bcp está se conectando ao Banco de Dados SQL ou ao SQL Data Warehouse, não há suporte para o uso da autenticação do Windows ou do Azure Active Directory.When the bcp utility is connecting to SQL Database or SQL Data Warehouse, using Windows authentication or Azure Active Directory authentication is not supported. Use as opções - U e -P .Use the -U and -P options.

-v-v
Relata o número de versão e os direitos autorais do utilitário bcp .Reports the bcp utility version number and copyright.

-V (80 | 90 | 100 | 110 | 120 | 130 )-V (80 | 90 | 100 | 110 | 120 | 130 )
Executa a operação de cópia em massa usando tipos de dados de uma versão anterior do SQL ServerSQL Server.Performs the bulk-copy operation using data types from an earlier version of SQL ServerSQL Server. Essa opção não solicita informações para cada campo; ela usa os valores padrão.This option does not prompt for each field; it uses the default values.

80 = SQL Server 2000SQL Server 200080 = SQL Server 2000SQL Server 2000

90 = SQL Server 2005SQL Server 200590 = SQL Server 2005SQL Server 2005

100 = SQL Server 2008SQL Server 2008 and SQL Server 2008 R2SQL Server 2008 R2100 = SQL Server 2008SQL Server 2008 and SQL Server 2008 R2SQL Server 2008 R2

110 = SQL Server 2012SQL Server 2012110 = SQL Server 2012SQL Server 2012

120 = SQL Server 2014SQL Server 2014120 = SQL Server 2014SQL Server 2014

130 = SQL Server 2016SQL Server 2016130 = SQL Server 2016SQL Server 2016

Por exemplo, para gerar dados para tipos sem suporte no SQL Server 2000SQL Server 2000, mas que foram incorporados nas versões posteriores do SQL ServerSQL Server, use a opção -V80.For example, to generate data for types not supported by SQL Server 2000SQL Server 2000, but were introduced in later versions of SQL ServerSQL Server, use the -V80 option.

Para obter mais informações, consulte Importar dados de formato de caractere e nativo de versões anteriores do SQL Server.For more information, see Import Native and Character Format Data from Earlier Versions of SQL Server.

-w-w
Executa a operação de cópia em massa usando caracteres Unicode.Performs the bulk copy operation using Unicode characters. Essa opção não solicita informações para cada campo; ela usa nchar como tipo de armazenamento, sem prefixos, \t (caractere de tabulação) como separador de campos e \n (caractere de nova linha) como terminador de linha.This option does not prompt for each field; it uses nchar as the storage type, no prefixes, \t (tab character) as the field separator, and \n (newline character) as the row terminator. -w não é compatível com -c.-w is not compatible with -c.

Para obter mais informações, consulte Usar o formato de caractere Unicode para importar ou exportar dados (SQL Server).For more information, see Use Unicode Character Format to Import or Export Data (SQL Server).

-x-x
Usado com as opções format e -f format_file , gera um arquivo de formato baseado em XML em vez do arquivo de formato não XML padrão.Used with the format and -f format_file options, generates an XML-based format file instead of the default non-XML format file. O -x não funciona ao importar ou exportar dados.The -x does not work when importing or exporting data. Ele gera um erro se for usado sem format nem -f format_file.It generates an error if used without both format and -f format_file.

ComentáriosRemarks

O utilitário bcp 13.0 é instalado quando você instala as ferramentas do MicrosoftMicrosoft SQL Server 2017SQL Server 2017 .The bcp 13.0 client is installed when you install MicrosoftMicrosoft SQL Server 2017SQL Server 2017 tools. Se as ferramentas forem instaladas para o SQL Server 2017SQL Server 2017 e para uma versão anterior do SQL ServerSQL Server, dependendo do valor na variável de ambiente PATH, talvez você esteja usando o cliente bcp anterior em vez do cliente bcp 13.0.If tools are installed for both SQL Server 2017SQL Server 2017 and an earlier version of SQL ServerSQL Server, depending on the order of values of the PATH environment variable, you might be using the earlier bcp client instead of the bcp 13.0 client. Essa variável de ambiente define o conjunto de diretórios usado pelo Windows para pesquisar por arquivos executáveis.This environment variable defines the set of directories used by Windows to search for executable files. Para descobrir qual versão você está usando, execute o comando bcp /v no Prompt de Comando do Windows.To discover which version you are using, run the bcp /v command at the Windows Command Prompt. Para obter mais informações sobre como definir o caminho de comando na variável de ambiente PATH, consulte a Ajuda do Windows.For information about how to set the command path in the PATH environment variable, see Windows Help.

O utilitário bcp também pode ser baixado separadamente do Feature Pack do Microsoft SQL Server 2016.The bcp utility can also be downloaded separately from the Microsoft SQL Server 2016 Feature Pack. Selecione ENU\x64\MsSqlCmdLnUtils.msi ou ENU\x86\MsSqlCmdLnUtils.msi.Select either ENU\x64\MsSqlCmdLnUtils.msi or ENU\x86\MsSqlCmdLnUtils.msi.

Os arquivos de formato XML só têm suporte quando as ferramentas do SQL ServerSQL Server são instaladas junto com o SQL ServerSQL Server Native Client.XML format files are only supported when SQL ServerSQL Server tools are installed together with SQL ServerSQL Server Native Client.

Para obter mais informações sobre onde encontrar ou como executar o utilitário bcp e sobre as convenções de sintaxe dos utilitários de prompt de comando, confira Referência de utilitário de linha de comando (Mecanismo de Banco de Dados).For information about where to find or how to run the bcp utility and about the command prompt utilities syntax conventions, see Command Prompt Utility Reference (Database Engine).

Para obter informações sobre como preparar dados para importar ou exportar operações em massa, veja Preparar dados para exportação ou importação em massa (SQL Server).For information on preparing data for bulk import or export operations, see Prepare Data for Bulk Export or Import (SQL Server).

Para obter informações sobre quando as operações de inserção de linhas executadas por importações em massa são registradas no log de transações, veja Pré-requisitos para log mínimo em importação em massa.For information about when row-insert operations that are performed by bulk import are logged in the transaction log, see Prerequisites for Minimal Logging in Bulk Import.

Suporte de arquivos de dados nativosNative Data File Support

No SQL Server 2017SQL Server 2017, o utilitário bcp oferece suporte somente a arquivos de dados nativos compatíveis com SQL Server 2000SQL Server 2000, SQL Server 2005SQL Server 2005, SQL Server 2008SQL Server 2008, SQL Server 2008 R2SQL Server 2008 R2e SQL Server 2012SQL Server 2012.In SQL Server 2017SQL Server 2017, the bcp utility supports native data files compatible with SQL Server 2000SQL Server 2000, SQL Server 2005SQL Server 2005, SQL Server 2008SQL Server 2008, SQL Server 2008 R2SQL Server 2008 R2, and SQL Server 2012SQL Server 2012.

Colunas computadas e colunas de carimbo de data/horaComputed Columns and timestamp Columns

Os valores no arquivo de dados sendo para colunas computadas ou timestamp são ignorados, e o SQL ServerSQL Server atribui valores automaticamente.Values in the data file being imported for computed or timestamp columns are ignored, and SQL ServerSQL Server automatically assigns values. Se o arquivo de dados não contiver valores para as colunas computadas ou timestamp na tabela, use um arquivo de formato para especificar que as colunas computadas ou timestamp na tabela devem ser ignoradas ao importar dados; o SQL ServerSQL Server automaticamente atribuirá valores para a coluna.If the data file does not contain values for the computed or timestamp columns in the table, use a format file to specify that the computed or timestamp columns in the table should be skipped when importing data; SQL ServerSQL Server automatically assigns values for the column.

Colunas computadas e timestamp são copiadas em massa do SQL ServerSQL Server em um arquivo de dados, como sempre.Computed and timestamp columns are bulk copied from SQL ServerSQL Server to a data file as usual.

Especificando identificadores que contêm espaços ou aspasSpecifying Identifiers That Contain Spaces or Quotation Marks

SQL ServerSQL Server podem incluir caracteres como espaços inseridos e aspas. identifiers can include characters such as embedded spaces and quotation marks. Tais identificadores devem ser tratados do seguinte modo:Such identifiers must be treated as follows:

  • Quando você especificar um identificador ou nome de arquivo que inclua um espaço ou aspas no prompt de comando, coloque o identificador entre aspas ("").When you specify an identifier or file name that includes a space or quotation mark at the command prompt, enclose the identifier in quotation marks ("").

    Por exemplo, o comando bcp out a seguir cria um arquivo de dados nomeado Currency Types.dat:For example, the following bcp out command creates a data file named Currency Types.dat:

    bcp AdventureWorks2012.Sales.Currency out "Currency Types.dat" -T -c  
    
  • Para especificar um nome de banco de dados que contém um espaço ou aspas, é necessário usar a opção -q .To specify a database name that contains a space or quotation mark, you must use the -q option.

  • Para nomes de proprietário, tabela ou exibição que contenham espaços inseridos ou aspas, você também pode:For owner, table, or view names that contain embedded spaces or quotation marks, you can either:

    • Especificar a opção -q ouSpecify the -q option, or

    • Inserir o nome de proprietário, tabela ou exibição entre colchetes ([]) dentro das aspas.Enclose the owner, table, or view name in brackets ([]) inside the quotation marks.

Validação de dadosData Validation

Agora, obcp impõe validação de dados e verificações de dados que podem provocar falhas em scripts se forem executados em dados inválidos em um arquivo de dados.bcp now enforces data validation and data checks that might cause scripts to fail if they are executed on invalid data in a data file. Por exemplo, o bcp agora verifica se:For example, bcp now verifies that:

  • A representação nativa de tipos de dados float ou real é válida.The native representation of float or real data types are valid.

  • Dados Unicode têm um comprimento regular de byte.Unicode data has an even-byte length.

    Formas de dados inválidos que podiam ser importadas em massa em versões anteriores do SQL ServerSQL Server podem falhar ao serem carregadas agora; enquanto em versões anteriores a falha só ocorria quando um cliente tentava acessar os dados inválidos.Forms of invalid data that could be bulk imported in earlier versions of SQL ServerSQL Server might fail to load now; whereas, in earlier versions, the failure did not occur until a client tried to access the invalid data. A validação adicional minimiza as surpresas ao consultar os dados depois do carregamento em massa.The added validation minimizes surprises when querying the data after bulk load.

Exportando ou importando documentos SQLXML em massaBulk Exporting or Importing SQLXML Documents

Para exportar ou importar dados SQLXML em massa, use um dos tipos de dados a seguir em seu arquivo de formato.To bulk export or import SQLXML data, use one of the following data types in your format file.

Tipo de dadosData type EfeitoEffect
SQLCHAR ou SQLVARYCHARSQLCHAR or SQLVARYCHAR Os dados são enviados na página de código do cliente ou na página de código implicada pelo agrupamento.The data is sent in the client code page or in the code page implied by the collation). O efeito é o mesmo que especificar a opção -c sem especificar um arquivo de formato.The effect is the same as specifying the -c switch without specifying a format file.
SQLNCHAR ou SQLNVARCHARSQLNCHAR or SQLNVARCHAR Os dados são enviados como Unicode.The data is sent as Unicode. O efeito é o mesmo que especificar a opção -w sem especificar um arquivo de formato.The effect is the same as specifying the -w switch without specifying a format file.
SQLBINARY ou SQLVARYBINSQLBINARY or SQLVARYBIN Os dados são enviados sem qualquer conversão.The data is sent without any conversion.

PermissõesPermissions

Uma operação bcp out exige a permissão SELECT na tabela de origem.A bcp out operation requires SELECT permission on the source table.

Uma operação bcp in exige no mínimo as permissões SELECT/INSERT na tabela de destino.A bcp in operation minimally requires SELECT/INSERT permissions on the target table. Além disso, a permissão ALTER TABLE será necessária se qualquer das seguintes afirmações for verdadeira:In addition, ALTER TABLE permission is required if any of the following is true:

  • Existem restrições e a dica CHECK_CONSTRAINTS não foi especificada.Constraints exist and the CHECK_CONSTRAINTS hint is not specified.

    Observação

    Desabilitar restrições é o comportamento padrão.Disabling constraints is the default behavior. Para habilitar restrições explicitamente, use a opção -h com a dica CHECK_CONSTRAINTS.To enable constraints explicitly, use the -h option with the CHECK_CONSTRAINTS hint.

  • Existem gatilhos e a dica FIRE_TRIGGER não foi especificada.Triggers exist and the FIRE_TRIGGER hint is not specified.

    Observação

    Por padrão, os gatilhos não são disparados.By default, triggers are not fired. Para disparar gatilhos explicitamente, use a opção -h com a dica FIRE_TRIGGERS.To fire triggers explicitly, use the -h option with the FIRE_TRIGGERS hint.

  • Use a opção -E para importar valores de identidade de um arquivo de dados.You use the -E option to import identity values from a data file.

Observação

A exigência da permissão ALTER TABLE na tabela de destino era nova no SQL Server 2005SQL Server 2005.Requiring ALTER TABLE permission on the target table was new in SQL Server 2005SQL Server 2005. Essa nova exigência pode provocar falha em scripts bcp que não impõem verificações de gatilhos e de restrições se a conta do usuário não tiver permissões ALTER TABLE para a tabela de destino.This new requirement might cause bcp scripts that do not enforce triggers and constraint checks to fail if the user account lacks ALTER table permissions for the target table.

Práticas recomendadas de modo de caractere (-c) e modo nativo (-n)Character Mode (-c) and Native Mode (-n) Best Practices

Esta seção apresenta recomendações para modo de caractere (-c) e modo nativo (-n).This section has recommendations for to character mode (-c) and native mode (-n).

  • (Administrador/Usuário) Quando possível, use o formato nativo (-n) para evitar o problema de separador.(Administrator/User) When possible, use native format (-n) to avoid the separator issue. Use o formato nativo para exportar e importar com o uso do SQL ServerSQL Server.Use the native format to export and import using SQL ServerSQL Server. Exporte dados do SQL ServerSQL Server com o uso da opção -c ou -w se os dados serão importados para um banco de dados do SQL ServerSQL Server .Export data from SQL ServerSQL Server using the -c or -w option if the data will be imported to a non- SQL ServerSQL Server database.

  • (Administrador) Verifique dados ao usar BCP OUT.(Administrator) Verify data when using BCP OUT. Por exemplo, quando você usa BCP OUT, BCP IN e, em seguida, BCP OUT, verifique se os dados são exportados corretamente e se os valores de terminador não são usados como parte de algum valor de dados.For example, when you use BCP OUT, BCP IN, and then BCP OUT verify that the data is properly exported and the terminator values are not used as part of some data value. Considere substituir os terminadores padrão (com as opções -t e -r) com valores hexadecimais aleatórios para evitar conflitos entre valores de terminadores e os valores de dados.Please consider overriding the default terminators (using -t and -r options) with random hexadecimal values to avoid conflicts between terminator values and data values.

  • (Usuário) Use um terminador longo e exclusivo (qualquer sequência de bytes ou de caracteres) para minimizar a possibilidade de um conflito com o valor da cadeia de caracteres real.(User) Use a long and unique terminator (any sequence of bytes or characters) to minimize the possibility of a conflict with the actual string value. Isso pode ser feito com as opções -t e -r.This can be done by using the -t and -r options.

ExemplosExamples

Esta seção contém os seguintes exemplos:This section contains the following examples:

  • A.A. Identificar a versão do utilitário bcpIdentify bcp utility version

  • B.B. Copiando linhas de tabela em um arquivo de dados (com uma conexão confiável)Copying table rows into a data file (with a trusted connection)

  • C.C. Copiando linhas de tabela em um arquivo de dados (com autenticação mista)Copying table rows into a data file (with Mixed-mode Authentication)

  • D.D. Copiando dados de um arquivo em uma tabelaCopying data from a file to a table

  • E.E. Copiando uma coluna específica em um arquivo de dadosCopying a specific column into a data file

  • F.F. Copiando uma linha específica em um arquivo de dadosCopying a specific row into a data file

  • G.G. Copiando dados de uma consulta em um arquivo de dadosCopying data from a query to a data file

  • H.H. Criando arquivos de formatoCreating format files

  • I.I. Usando um arquivo de formato para importação em massa com bcpUsing a format file to bulk import with bcp

Condições de teste de exemploExample Test Conditions

Os exemplos abaixo utilizam o banco de dados de exemplo do WideWorldImporters para SQL Server (a partir de 2016) Banco de Dados SQL do Microsoft Azure.The examples below make use of the WideWorldImporters sample database for SQL Server (starting 2016) and Azure SQL Database. WideWorldImporters pode ser baixado em https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0.WideWorldImporters can be downloaded from https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0. Consulte RESTORE (Transact-SQL) para obter a sintaxe para restaurar o banco de dados de exemplo.See RESTORE (Transact-SQL) for the syntax to restore the sample database. Exceto quando especificado de outra forma, os exemplos presumem que você esteja usando a Autenticação do Windows e tenha uma conexão confiável com a instância do servidor na qual está executando o comando bcp .Except where specified otherwise, the examples assume that you are using Windows Authentication and have a trusted connection to the server instance on which you are running the bcp command. Um diretório chamado D:\BCP será usado em muitos dos exemplos.A directory named D:\BCP will be used in many of the examples.

O script abaixo cria uma cópia vazia da tabela WorlWideImporters.Warehouse.StockItemTransactions e, em seguida, adiciona uma restrição de chave primária.The script below creates an empty copy of the WorlWideImporters.Warehouse.StockItemTransactions table and then adds a primary key constraint. Executar a seguinte consulta de T-SQL no SSMS (SQL Server Management Studio)Run the following T-SQL script in SQL Server Management Studio (SSMS)

USE WorlWideImporters;  
GO  

SET NOCOUNT ON;

IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'Warehouse.StockItemTransactions_bcp')     
BEGIN
    SELECT * INTO WorlWideImporters.Warehouse.StockItemTransactions_bcp
    FROM WorlWideImporters.Warehouse.StockItemTransactions  
    WHERE 1 = 2;  

    ALTER TABLE Warehouse.StockItemTransactions_bcp 
    ADD CONSTRAINT PK_Warehouse_StockItemTransactions_bcp PRIMARY KEY NONCLUSTERED 
    (StockItemTransactionID ASC);
END
Observação

Trunque a tabela StockItemTransactions_bcp como desejar.Truncate the StockItemTransactions_bcp table as needed.

TRUNCATE TABLE WorlWideImporters.Warehouse.StockItemTransactions_bcp;TRUNCATE TABLE WorlWideImporters.Warehouse.StockItemTransactions_bcp;

A.A. Identificar a versão do utilitário bcpIdentify bcp utility version

No prompt de comando, digite o seguinte comando:At a command prompt, enter the following command:

bcp -v

B.B. Copiando linhas de tabela em um arquivo de dados (com uma conexão confiável)Copying table rows into a data file (with a trusted connection)

Os exemplos a seguir ilustram a opção out na tabela WorlWideImporters.Warehouse.StockItemTransactions .The following examples illustrates the out option on the WorlWideImporters.Warehouse.StockItemTransactions table.

  • BasicBasic
    Este exemplo cria um arquivo de dados nomeado StockItemTransactions_character.bcp e copia os dados da tabela nesse arquivo usando o formato de caractere .This example creates a data file named StockItemTransactions_character.bcp and copies the table data into it using character format.

    No prompt de comando, digite o seguinte comando:At a command prompt, enter the following command:

    bcp WorlWideImporters.Warehouse.StockItemTransactions out D:\BCP\StockItemTransactions_character.bcp -c -T
    
    • ExpandedExpanded
      Este exemplo cria um arquivo de dados nomeado StockItemTransactions_native.bcp e copia os dados da tabela nesse arquivo usando formato nativo .This example creates a data file named StockItemTransactions_native.bcp and copies the table data into it using the native format. O exemplo também: especifica o número máximo de erros de sintaxe, um arquivo de erro e um arquivo de saída.The example also: specifies the maximum number of syntax errors, an error file, and an output file.

      No prompt de comando, digite o seguinte comando:At a command prompt, enter the following command:

      bcp WorlWideImporters.Warehouse.StockItemTransactions OUT D:\BCP\StockItemTransactions_native.bcp -m 1 -n -e D:\BCP\Error_out.log -o D:\BCP\Output_out.log -S -T
      

Revise Error_out.log e Output_out.log.Review Error_out.log and Output_out.log. Error_out.log deve ficar em branco.Error_out.log should be blank. Compare os tamanhos de arquivo entre StockItemTransactions_character.bcp e StockItemTransactions_native.bcp.Compare the file sizes between StockItemTransactions_character.bcp and StockItemTransactions_native.bcp.

C.C. Copiando linhas de tabela em um arquivo de dados (com autenticação mista)Copying table rows into a data file (with mixed-mode authentication)

O exemplo a seguir ilustra a opção out na tabela WorlWideImporters.Warehouse.StockItemTransactions .The following example illustrates the out option on the WorlWideImporters.Warehouse.StockItemTransactions table. Este exemplo cria um arquivo de dados nomeado StockItemTransactions_character.bcp e copia os dados da tabela nesse arquivo usando o formato de caractere .This example creates a data file named StockItemTransactions_character.bcp and copies the table data into it using character format.

O exemplo pressupõe que você esteja usando autenticação mista; é necessário usar a opção -U para especificar sua ID de logon.The example assumes that you are using mixed-mode authentication, you must use the -U switch to specify your login ID. Além disso, a menos que você esteja se conectando à instância padrão do SQL ServerSQL Server no computador local, use a opção -S para especificar o nome do sistema e, opcionalmente, um nome de instância.Also, unless you are connecting to the default instance of SQL ServerSQL Server on the local computer, use the -S switch to specify the system name and, optionally, an instance name.

No prompt de comando, digite o seguinte comando: (O sistema solicitará sua senha.)At a command prompt, enter the following command: (The system will prompt you for your password.)

bcp WorlWideImporters.Warehouse.StockItemTransactions out D:\BCP\StockItemTransactions_character.bcp -c -U<login_id> -S<server_name\instance_name>

D.D. Copiando dados de um arquivo em uma tabelaCopying data from a file to a table

Os exemplos a seguir ilustram a opção in na tabela WorlWideImporters.Warehouse.StockItemTransactions_bcp usando os arquivos criados acima.The following examples illustrate the in option on the WorlWideImporters.Warehouse.StockItemTransactions_bcp table using files created above.

  • BasicBasic
    Este exemplo usa o arquivo de dados StockItemTransactions_character.bcp criado anteriormente.This example uses the StockItemTransactions_character.bcp data file previously created.

    No prompt de comando, digite o seguinte comando:At a command prompt, enter the following command:

    bcp WorlWideImporters.Warehouse.StockItemTransactions_bcp IN D:\BCP\StockItemTransactions_character.bcp -c -T  
    
  • ExpandedExpanded
    Este exemplo usa o arquivo de dados StockItemTransactions_native.bcp criado anteriormente.This example uses the StockItemTransactions_native.bcp data file previously created. O exemplo também: usa a dica TABLOCK, especifica o tamanho do lote, o número máximo de erros de sintaxe, um arquivo de erro e um arquivo de saída.The example also: use the hint TABLOCK, specifies the batch size, the maximum number of syntax errors, an error file, and an output file.

    No prompt de comando, digite o seguinte comando:At a command prompt, enter the following command:

    bcp WorlWideImporters.Warehouse.StockItemTransactions_bcp IN D:\BCP\StockItemTransactions_native.bcp -b 5000 -h "TABLOCK" -m 1 -n -e D:\BCP\Error_in.log -o D:\BCP\Output_in.log -S -T 
    

    Revise Error_in.log e Output_in.log.Review Error_in.log and Output_in.log.

E.E. Copiando uma coluna específica em um arquivo de dadosCopying a specific column into a data file

Para copiar uma coluna específica, você pode usar a opção queryout .To copy a specific column, you can use the queryout option. O exemplo a seguir copia apenas a coluna StockItemTransactionID da tabela Warehouse.StockItemTransactions em um arquivo de dados.The following example copies only the StockItemTransactionID column of the Warehouse.StockItemTransactions table into a data file.

No prompt de comando, digite o seguinte comando:At a command prompt, enter the following command:

bcp "SELECT StockItemTransactionID FROM WorlWideImporters.Warehouse.StockItemTransactions WITH (NOLOCK)" queryout D:\BCP\StockItemTransactionID_c.bcp -c -T

F.F. Copiando uma linha específica em um arquivo de dadosCopying a specific row into a data file

Para copiar uma linha específica, você pode usar a opção queryout .To copy a specific row, you can use the queryout option. O exemplo a seguir copia apenas a linha para o contato nomeado Amy Trefl da tabela WorlWideImporters.Application.People em um arquivo de dados Amy_Trefl_c.bcp.The following example copies only the row for the person named Amy Trefl from the WorlWideImporters.Application.People table into a data file Amy_Trefl_c.bcp. Observação: a opção -d é usado para identificar o banco de dados.Note: the -d switch is used identify the database.

No prompt de comando, digite o seguinte comando:At a command prompt, enter the following command:

bcp "SELECT * from Application.People WHERE FullName = 'Amy Trefl'" queryout D:\BCP\Amy_Trefl_c.bcp -d WorlWideImporters -c -T

G.G. Copiando dados de uma consulta em um arquivo de dadosCopying data from a query to a data file

Para copiar o conjunto de resultados de uma instrução Transact-SQL em um arquivo de dados, use a opção queryout .To copy the result set from a Transact-SQL statement to a data file, use the queryout option. O exemplo a seguir copia os nomes da tabela WorlWideImporters.Application.People , classificados pelo nome completo, no arquivo de dados People.txt .The following example copies the names from the WorlWideImporters.Application.People table, ordered by full name, into the People.txt data file. Observação: a opção -t é usado para criar um arquivo delimitado por vírgula.Note: the -t switch is used to create a comma delimited file.

No prompt de comando, digite o seguinte comando:At a command prompt, enter the following command:

bcp "SELECT FullName, PreferredName FROM WorlWideImporters.Application.People ORDER BY FullName" queryout D:\BCP\People.txt -t, -c -T

H.H. Criando arquivos de formatoCreating format files

O exemplo a seguir cria três arquivos de formato diferentes para a tabela Warehouse.StockItemTransactions no banco de dados do WorlWideImporters .The following example creates three different format files for the Warehouse.StockItemTransactions table in the WorlWideImporters database. Revise o conteúdo de cada arquivo criado.Review the contents of each created file.

No prompt de comando, digite os seguintes comandos:At a command prompt, enter the following commands:

REM non-XML character format
bcp WorlWideImporters.Warehouse.StockItemTransactions format nul -f D:\BCP\StockItemTransactions_c.fmt -c -T 

REM non-XML native format
bcp WorlWideImporters.Warehouse.StockItemTransactions format nul -f D:\BCP\StockItemTransactions_n.fmt -n -T

REM XML character format
bcp WorlWideImporters.Warehouse.StockItemTransactions format nul -f D:\BCP\StockItemTransactions_c.xml -x -c -T
Observação

Para usar a opção -x , é necessário estar usando um cliente bcp 9.0.To use the -x switch, you must be using a bcp 9.0 client. Para obter mais informações sobre como usar o cliente bcp 9.0, consulte "Comentários."For information about how to use the bcp 9.0 client, see "Remarks."

Para obter mais informações, consulte Arquivos de formato não XML (SQL Server) e Arquivos de formato XML (SQL Server).For more information, see Non-XML Format Files (SQL Server) and XML Format Files (SQL Server).

I.I. Usando um arquivo de formato para importação em massa com bcpUsing a format file to bulk import with bcp

Para usar um arquivo de formato criado anteriormente ao importar dados para uma instância do SQL ServerSQL Server, use a opção -f com a opção in .To use a previously created format file when importing data into an instance of SQL ServerSQL Server, use the -f switch with the in option. Por exemplo, o comando a seguir copia em massa o conteúdo de um arquivo de dados, StockItemTransactions_character.bcp, em uma cópia da tabela Warehouse.StockItemTransactions_bcp usando o arquivo de formato criado anteriormente StockItemTransactions_c.xml.For example, the following command bulk copies the contents of a data file, StockItemTransactions_character.bcp, into a copy of the Warehouse.StockItemTransactions_bcp table by using the previously created format file, StockItemTransactions_c.xml. Observação: a opção -L é usado para importar apenas os 100 primeiros registros.Note: the -L switch is used to import only the first 100 records.

No prompt de comando, digite o seguinte comando:At a command prompt, enter the following command:

bcp WorlWideImporters.Warehouse.StockItemTransactions_bcp in D:\BCP\StockItemTransactions_character.bcp -L 100 -f D:\BCP\StockItemTransactions_c.xml -T 
Observação

Os arquivos de formato são úteis quando os campos do arquivo de dados são diferentes das colunas da tabela, por exemplo, em seu número, classificação ou tipos de dados.Format files are useful when the data file fields are different from the table columns; for example, in their number, ordering, or data types. Para obter mais informações, consulte Arquivos de formato para importação ou exportação de dados (SQL Server).For more information, see Format Files for Importing or Exporting Data (SQL Server).

J.J. Especificando uma página de códigoSpecifying a code page

O exemplo de código parcial a seguir mostra a importação de bcp ao especificar uma página de código 65001:The following partial code example shows bcp import while specifying a code page 65001:

bcp.exe MyTable in "D:\data.csv" -T -c -C 65001 -t , ...  

O exemplo de código parcial a seguir mostra a exportação de bcp ao especificar uma página de código 65001:The following partial code example shows bcp export while specifying a code page 65001:

bcp.exe MyTable out "D:\data.csv" -T -c -C 65001 -t , ...  

Exemplos adicionaisAdditional Examples

Os tópicos a seguir contêm exemplos sobre como usar o bcp:The following topics contain examples of using bcp:
Formatos de dados para importar ou exportar em massa (SQL Server)Data Formats for Bulk Import or Bulk Export (SQL Server)
 ● Usar o formato nativo para importar ou exportar dados (SQL Server) ● Use Native Format to Import or Export Data (SQL Server)
 ● Usar o formato de caractere para importar ou exportar dados (SQL Server) ● Use Character Format to Import or Export Data (SQL Server)
 ● Usar o formato nativo Unicode para importar ou exportar dados (SQL Server) ● Use Unicode Native Format to Import or Export Data (SQL Server)
 ● Usar o formato de caractere Unicode para importar ou exportar dados (SQL Server) ● Use Unicode Character Format to Import or Export Data (SQL Server)

Especificar terminadores de campo e linha (SQL Server)Specify Field and Row Terminators (SQL Server)

Manter valores nulos ou use os valores padrão durante a importação em massa (SQL Server)Keep Nulls or Use Default Values During Bulk Import (SQL Server)

Manter valores de identidade ao importar dados em massa (SQL Server)Keep Identity Values When Bulk Importing Data (SQL Server)

Arquivos de formato para importação ou exportação de dados (SQL Server))Format Files for Importing or Exporting Data (SQL Server))
 ● Criar um formato de arquivo (SQL Server) ● Create a Format File (SQL Server)
 ● Usar um arquivo de formato para importação em massa de dados (SQL Server) ● Use a Format File to Bulk Import Data (SQL Server)
 ● Usar um arquivo de formato para ignorar uma coluna de tabela (SQL Server) ● Use a Format File to Skip a Table Column (SQL Server)
 ● Usar um arquivo de formato para ignorar um campo de dados (SQL Server) ● Use a Format File to Skip a Data Field (SQL Server)
 ● Usar um arquivo de formato para mapear colunas de uma tabela para campos de arquivo de dados (SQL Server) ● Use a Format File to Map Table Columns to Data-File Fields (SQL Server)

Exemplos de importação e exportação em massa de documentos XML (SQL Server)Examples of Bulk Import and Export of XML Documents (SQL Server)

Consulte tambémSee Also

Preparar dados para exportar ou importar em massa (SQL Server) Prepare Data for Bulk Export or Import (SQL Server)
BULK INSERT (Transact-SQL) BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL) OPENROWSET (Transact-SQL)
SET QUOTED_IDENTIFIER ( Transact-SQL ) SET QUOTED_IDENTIFIER (Transact-SQL)
sp_configure (Transact-SQL) sp_configure (Transact-SQL)
sp_tableoption ( Transact-SQL ) sp_tableoption (Transact-SQL)
Arquivos de formato para importação ou exportação de dados (SQL Server)Format Files for Importing or Exporting Data (SQL Server)