Compartir a través de


Utilidad BCP

Aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Analítica (PDW)Base de datos SQL en Microsoft Fabric

La utilidad de programa de copia masiva (bcp) copia datos de forma masiva entre una instancia de SQL Server y un archivo de datos en un formato especificado por el usuario.

Use la utilidad bcp para importar un gran número de filas nuevas en tablas de SQL Server o para exportar datos de tablas a archivos de datos. Excepto cuando se usa con la opción queryout, la utilidad no requiere ningún conocimiento de Transact-SQL. Para importar datos en una tabla, debe usar un archivo de formato creado para esa tabla o comprender la estructura de la tabla y los tipos de datos que son válidos para sus columnas.

Para obtener más información sobre qué versión de bcp está instalada en el sistema, los requisitos del sistema y cómo obtener bcp, consulte Descargar e instalar la utilidad bcp.

Nota:

Los archivos de datos bcp no incluyen información de formato ni esquema. Si usa bcp para hacer una copia de seguridad de los datos y, después, quitar o modificar la tabla de origen, necesita una definición de tabla idéntica o un archivo de formato para importar los datos.

Para conocer las convenciones de sintaxis que se usan para la sintaxis bcp , consulte Transact-SQL convenciones de sintaxis (Transact-SQL).

Cómo usar bcp

Para obtener información sobre cómo usar bcp, incluidos los comandos de ejemplo, vea Cómo usar la utilidad bcp.

Uso de bcp en Linux y macOS

Para obtener información sobre cómo instalar las herramientas de línea de comandos en macOS y Linux, consulte Instalación de las herramientas de línea de comandos sqlcmd y bcp de SQL Server en Linux.

Consideraciones para bcp en Linux y macOS

  • El terminador de campo es una pestaña (\t).

  • El terminador de línea es una nueva línea (\n).

  • Para las transferencias de SQL Server a SQL Server, use el formato nativo (-n). Use el formato de caracteres (-c) solo cuando los datos se crucen en un sistema que no sea de SQL Server o cuando el archivo de datos no debe contener caracteres extendidos. Para obtener más información, consulte El modo de caracteres y los procedimientos recomendados del modo nativo.

  • Debe comillar o escapar una barra diagonal inversa (\) en un argumento de línea de comandos. Por ejemplo, para especificar una nueva línea como terminador de fila personalizado, use uno de los siguientes mecanismos:

    • -r\\n
    • -r"\n"
    • -r'\n'

Compatibilidad con TDS 8.0

SQL Server 2025 (17.x) presenta compatibilidad con TDS 8.0 para la utilidad bcp .

Syntax

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 ]
    [ -D ]
    [ -e err_file ]
    [ -E ]
    [ -f format_file ]
    [ -F first_row ]
    [ -G Microsoft Entra authentication ]
    [ -h"hint [ , ...n ] " ]
    [ -i input_file ]
    [ -k ]
    [ -K application_intent ]
    [ -l login_timeout ]
    [ -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 ]
    [ -u ]
    [ -v ]
    [ -V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170) ]
    [ -w ]
    [ -x ]
    [ -Y [ s | m | o ] ]
    [ -z ]

Opciones de la línea de comandos

En la tabla siguiente se enumeran las opciones de línea de comandos disponibles en bcp y qué sistemas operativos admiten.

Opción de línea de comandos Compatible con Windows Compatible con Linux y macOS
Modo de objeto y transferencia
[database_name.]esquema.{table_name | view_name | "query"}
{endata_file | outdata_file | queryoutdata_file | format nul}
-q
Conexión y autenticación
-S [server_name[\instance_name]]
-d database_name
-U login_id
-P password
-G Autenticación de Microsoft Entra
-D
-K application_intent
-l login_timeout
-T
-Y[s| m| o] 1 1
Representación de datos
-c
-C { ACP | OEM | RAW | code_page } No
-n
-N No
-w
-z No 2
Formato de archivos
-f format_file
-x No
Procesamiento por lotes y rendimiento
-a tamaño_del_paquete
-b batch_size
-h"hint [,... n]" No
-m max_errors
-F first_row
-L last_row
-r row_term
-t field_term
Control de valores
-k
-E
E/S de archivos y registro de eventos
-i input_file No
-o output_file No
-e err_file
Compatibilidad y control de versiones
-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 ) No
-u 1 1
Opciones varias
-R
-v

1 Requiere bcp versión 18 o posterior, que se incluye con SQL Server 2025 (17.x).
2 ODBC 18.6.1.1 y versiones posteriores.

Modo de objeto y transferencia

database_name

Nombre de la base de datos que contiene la tabla o vista especificadas. Si no especifica este parámetro, se usa la base de datos predeterminada para el usuario.

También puede especificar explícitamente el nombre de la base de datos con -d.

schema

Nombre del propietario de la tabla o la vista. schema es opcional si el usuario que realiza la operación es propietario de la tabla o vista especificadas. Si no especifica esquema y el usuario que realiza la operación no posee la tabla o vista especificada, SQL Server devuelve un mensaje de error y se cancela la operación.

table_name

Nombre de la tabla de destino cuando se importan datos en SQL Server (in) y nombre de la tabla de origen cuando se exportan datos desde SQL Server (out).

view_name

Nombre de la vista de destino cuando se copian datos en SQL Server (in) y nombre de la vista de origen cuando se copian datos desde SQL Server (out). Cuando se usa como destino (in), una vista solo se admite si todas sus columnas hacen referencia a la misma tabla. Esta restricción no se aplica cuando la vista se usa como origen (out). Para obtener más información sobre las restricciones para copiar datos en vistas, vea INSERT.

"query"

Consulta Transact-SQL que devuelve un conjunto de resultados. Si la consulta devuelve múltiples conjuntos de resultados, solo se copiará el primero en el archivo de datos; los conjuntos de resultados siguientes se omitirán. Utilice comillas dobles ("") para la consulta y comillas simples ('') en cualquier elemento que esté incrustado en la consulta. También debe especificar queryout al copiar datos de forma masiva desde una consulta.

La consulta puede hacer referencia a un procedimiento almacenado siempre que todas las tablas a las que se haga referencia dentro de dicho procedimiento almacenado existan antes de ejecutar la instrucción bcp. Por ejemplo, si el procedimiento almacenado genera una tabla temporal, se produce un error en la instrucción bcp porque la tabla temporal solamente está disponible en tiempo de ejecución y no cuando se ejecuta la instrucción. En este caso, considere la posibilidad de insertar los resultados del procedimiento almacenado en una tabla y, después, usar bcp para copiar los datos de la tabla en un archivo de datos.

en

Copia los datos de un archivo en la tabla o vista de la base de datos. Especifica la dirección de la copia masiva.

fuera

Copia datos de la tabla o vista de la base de datos en un archivo. Especifica la dirección de la copia masiva.

Si se especifica un archivo ya existente, este se sobrescribe. Cuando la utilidad bcp extrae datos, representa una cadena vacía como null y una cadena nula como una cadena vacía.

data_file

Ruta completa del archivo de datos. Al importar datos de forma masiva en SQL Server, el archivo de datos contiene los datos que se van a copiar en la tabla o vista especificadas. Al exportar datos de forma masiva desde SQL Server, el archivo de datos contiene los datos copiados de la tabla o vista. La ruta de acceso puede contener de 1 a 255 caracteres. El archivo de datos puede contener 2^63 - 1 filas, como máximo.

queryout

Copia datos de una consulta y solo se debe especificar al copiar datos de forma masiva desde una consulta.

format

Crea un archivo de formato basado en la opción especificada (-n, -c, -w o -N) y los delimitadores de la vista o de la tabla. Cuando se copian datos de forma masiva, el comando bcp puede hacer referencia a un archivo de formato, lo que evita tener que especificar de nuevo la información de formato interactivamente. La format opción requiere la -f opción ; la creación de un archivo de formato XML también requiere la -x opción . Para obtener más información, vea Crear un archivo de formato con bcp (SQL Server). Debe especificar nul como valor (format nul).

-q

Ejecuta la SET QUOTED_IDENTIFIER ON instrucción en la conexión entre la utilidad bcp y una instancia de SQL Server. Use esta opción para especificar el nombre de una base de datos, del propietario, de una tabla o de una vista que contenga un espacio o una comilla simple. Incluya el nombre completo de la tabla o vista de tres partes entre comillas ("").

Para especificar un nombre de base de datos que contenga un espacio o una comilla simple, debe usar la opción -q.

-q no se aplica a los valores que se pasan a -d.

Para obtener más información, vea la sección Comentarios de este artículo.

Conexión y autenticación

-S [server_name[\instance_name]]

Especifica el nombre de la instancia de SQL Server a la que conectarse o, si usa -D, un DSN.

Si no especifica un servidor, la utilidad bcp se conecta a la instancia predeterminada de SQL Server en el equipo local. Necesita esta opción al ejecutar un comando bcp desde un equipo remoto en la red o una instancia con nombre local. Para establecer una conexión con la instancia predeterminada de SQL Server en un servidor, especifique únicamente server_name. Para conectarse a una instancia con nombre de SQL Server, especifique <server_name>\<instance_name>.

-d database_name

Especifica la base de datos a la que conectarse. De forma predeterminada, bcp se conecta a la base de datos predeterminada. Si especifica -d <database_name> y un nombre de tres partes (database_name.schema.table, pasado como primer parámetro a bcp), se produce un error porque no se puede especificar el nombre de la base de datos dos veces. Si database_name comienza con un guion (-) o una barra diagonal (/), no agregue un espacio entre -d y el nombre de la base de datos.

-U login_id

Especifica el identificador de inicio de sesión para conectar con SQL Server.

-P password

Especifica la contraseña para el identificador de inicio de sesión. Si no usa esta opción, el comando bcp solicita una contraseña. Si usa esta opción al final del símbolo del sistema sin una contraseña, bcp usa la contraseña predeterminada (NULL).

Importante

No utilice una contraseña en blanco. Utilice una contraseña segura.

Para enmascarar la contraseña, no especifique la opción -P junto con la opción -U. En su lugar, después de especificar bcp junto con la -U opción y otros modificadores (no especifique -P), presione la tecla Entrar y el comando le pedirá una contraseña. Este método garantiza que la contraseña se enmascare al introducirla.

Si la password comienza con un guion (-) o una barra diagonal (/), no se debe incluir un espacio entre -P y el valor de la password.

En Linux y macOS, cuando se usa con la -G opción sin -U, -P especifica un archivo que contiene un token de acceso de Microsoft Entra (v17.8 y versiones posteriores). El archivo de token debe estar en formato UTF-16LE (sin BOM). Para obtener más información, consulte Autenticación con el identificador de Entra de Microsoft en bcp.

-G

Se aplica a: Azure SQL Database, Azure SQL Managed Instance, SQL Database en Microsoft Fabric, Azure Synapse Analytics y SQL Server 2022 (16.x) y versiones posteriores.

El cliente utiliza este interruptor para especificar que el usuario ha sido autenticado con Microsoft Entra ID. El -G conmutador requiere bcp versión 14.0.3008.27 o versiones posteriores. Para determinar su versión, ejecute bcp -v. Para obtener más información, consulte Uso de la autenticación de Microsoft Entra con SQL Database o Azure Synapse Analytics o Autenticación en SQL Database en Microsoft Fabric.

Para obtener información completa sobre la autenticación de Microsoft Entra en bcp, consulte Autenticación con el identificador de Microsoft Entra en bcp.

-D

Hace que el valor transmitido a la opción bcp -S se interprete como un nombre de origen de datos (DSN). -D puede aparecer en cualquier parte de la línea de comandos; La ordenación relativa a -S no importa.

Se puede usar un DSN para:

  • Insertar opciones del controlador para simplificar las líneas de comandos.
  • Aplique las opciones del controlador que no sean accesibles de otra manera desde la línea de comandos, como MultiSubnetFailover.
  • Ayuda a proteger las credenciales confidenciales de ser detectadas como argumentos de línea de comandos.

Para obtener más información, consulte Compatibilidad con DSN en sqlcmd y bcp.

-K intención_de_aplicación

Declara el tipo de carga de trabajo de la aplicación al conectarse a un servidor. El único valor que es posible es ReadOnly. Si no especifica -K, la utilidad bcp no admite la conectividad a una réplica secundaria en un grupo de disponibilidad AlwaysOn. Para obtener más información, consulte Delegar cargas de trabajo de solo lectura a la réplica secundaria de un grupo de disponibilidad Always On.

-l login_timeout

Especifica un tiempo de espera de inicio de sesión. La opción -l especifica el número de segundos que tienen que transcurrir antes de que un inicio de sesión en SQL Server agote el tiempo de espera cuando se trate de conectar a un servidor. El tiempo de espera de inicio de sesión predeterminado es de 15 segundos. El período de tiempo de espera de inicio de sesión debe ser un número comprendido entre 0 y 65534. Si el valor proporcionado no es numérico o no se encuentra en ese intervalo, bcp genera un mensaje de error. Un valor de 0 especifica un tiempo de espera infinito.

-T

Especifica que la utilidad bcp se conecta a SQL Server con una conexión de confianza utilizando la seguridad integrada. No es necesario usar las credenciales de seguridad del usuario de la red, login_id y password. Si no especifica -T, debe especificar -U y -P para conectarse correctamente.

Importante

Use -T solo al conectarse a SQL Server con una conexión de confianza integrada de Windows. Al conectarse a Azure SQL Database o Azure Synapse Analytics, -T no se admite (autenticación integrada de Windows). Para la autenticación de Microsoft Entra en servicios de Azure o SQL Server 2022 (16.x) y versiones posteriores, use -G (consulte Autenticación con el identificador de Microsoft Entra en bcp).

-Y[s|m|o]

Se aplica a: bcp versión 18 y versiones posteriores, que se incluye con SQL Server 2025 (17.x).

Especifica si las conexiones usan el cifrado TLS a través de la red. -Y puede ser o (para Optional), m (para Mandatory, el valor predeterminado) o s (para Strict). Si no incluye -Y, -Ym (para Mandatory) es el valor predeterminado.

-u

Se aplica a: bcp versión 18 y versiones posteriores, que se incluye con SQL Server 2025 (17.x).

Confía en el certificado de servidor. Cuando se usa con la opción de cifrado para la conexión, habilita el cifrado mediante un certificado de servidor autofirmado.

Representación de datos

-c

Realiza la operación con un tipo de datos de caracteres. Esta opción no solicita cada campo. Usa char como tipo de almacenamiento, sin prefijos y usa \t (carácter de tabulación) como separador de campo y \r\n (carácter de nueva línea) como terminador de fila. La opción -c no es compatible con -w.

Para obtener más información, vea Usar el formato de caracteres para importar o exportar datos (SQL Server).

Para conocer los procedimientos recomendados, consulte Los procedimientos recomendados para el modo de caracteres y el modo nativo.

-C { ACP | OEM | RAW | code_page }

Se aplica a: Solo Windows. No se admite en Linux y macOS.

Especifica la página de códigos de los datos incluidos en el archivo de datos. code_page solo es pertinente si los datos contienen columnas de tipo char, varcharo text con valores de caracteres mayores que 127 o menores que 32.

Especifique un nombre de intercalación para cada columna en un archivo de formato, excepto cuando desee que la opción 65001 tenga prioridad sobre la especificación de intercalación o página de códigos.

Valor de página de códigos Description
ACP ANSI/Microsoft Windows (ISO 1252).
OEM Página de códigos predeterminada, utilizada por el cliente. Esta página de códigos es la predeterminada si no especifica -C.
RAW No se realiza ninguna conversión entre páginas de códigos. Esta opción es la más rápida porque no se produce ninguna conversión.
<code_page> Número de página de códigos específico, como 850.

Las versiones anteriores a SQL Server 2016 (13.x) no admiten la página de códigos 65001 (codificación UTF-8). Las versiones a partir de la versión 13 pueden importar codificación UTF-8 a versiones anteriores de SQL Server.

-n

Realiza la operación de copia masiva con los tipos de datos nativos (base de datos) de los datos. Esta opción no solicita confirmación para cada campo. Usa los valores nativos.

Para obtener más información, vea Usar el formato nativo para importar o exportar datos (SQL Server).

Para conocer los procedimientos recomendados, consulte Los procedimientos recomendados para el modo de caracteres y el modo nativo.

-N

Se aplica a: Solo Windows. No se admite en Linux y macOS.

Realiza la operación de copia masiva con los tipos de datos nativos (de la base de datos) para datos que no sean de caracteres y con datos Unicode para los datos de caracteres. Esta opción es una alternativa de mayor rendimiento que la opción -w y tiene como objeto la transferencia de datos de una instancia de SQL Server a otra mediante un archivo de datos. No realiza una petición para cada campo. Utilice esta opción cuando vaya a transferir datos que contengan caracteres extendidos ANSI y desee aprovechar el rendimiento del modo nativo.

Para obtener más información, vea Usar el formato nativo Unicode para importar o exportar datos (SQL Server).

Si exporta y después importa datos en el mismo esquema de tabla utilizando bcp con -N, puede aparecer una advertencia de truncamiento si hay una columna de caracteres no Unicode de longitud fija (por ejemplo, char(10)).

Puede omitir la advertencia. Una manera de resolver esta advertencia es usar -n en lugar de -N.

-w

Realiza la operación de copia masiva mediante caracteres Unicode. Esta opción no solicita cada campo. Usa nchar como tipo de almacenamiento, sin prefijos, \t (carácter de tabulación) como separador de campo y \n (carácter de nueva línea) como terminador de fila. La opción -w no es compatible con -c.

Para obtener más información, vea Usar el formato de caracteres Unicode para importar o exportar datos (SQL Server).

-z

Se aplica solo a: bcp (ODBC), Linux y macOS. Windows no es compatible.

Habilita la compatibilidad con tipos de datos vectoriales en la utilidad bcp . Esta característica está deshabilitada actualmente de forma predeterminada. Cuando se deshabilita, los datos vectoriales se importan o exportan como cadenas de matriz flotante JSON. Cuando está habilitado y al conectarse a SQL Server 2025 (17.x) y versiones posteriores, los datos vectoriales se importan o exportan en binario de vectores nativos .

Formato de archivos

-f format_file

Especifica la ruta de acceso completa de un archivo de formato. El significado de esta opción depende del entorno en el que se utiliza, como se indica a continuación:

  • Si usa -f con la format opción , se crea el format_file especificado para la tabla o vista especificadas. Para crear un archivo de formato XML, especifique también la opción -x. Para obtener más información, vea Crear un archivo de formato con bcp (SQL Server).

  • Si usa -f con la in opción o out , requiere un archivo de formato existente.

    Nota:

    El uso de un archivo de formato con la opción in o out es opcional. Si no especifica la opción -f y no especifica -n, -c, -w o -N, el indicador de comandos solicita información de formato y le permite guardar sus respuestas en un archivo de formato. El nombre de archivo predeterminado es bcp.fmt.

Si format_file comienza por un guion (-) o una barra diagonal (/), no incluya un espacio entre -f y el valor de format_file.

-x

Se aplica a: Solo Windows. No se admite en Linux y macOS.

Use esta opción con las opciones format y -fformat_file. Genera un archivo de formato basado en XML en lugar del archivo de formato no XML predeterminado. La -x opción no funciona al importar o exportar datos. Genera un error si se usa sin format ni -fformat_file.

Procesamiento por lotes y rendimiento

-a packet_size

Especifica el número de bytes por paquete de red que el cliente envía y recibe del servidor. Establezca esta opción de configuración de servidor mediante SQL Server Management Studio o el procedimiento almacenado del sistema sp_configure. Sin embargo, puede invalidar la opción de configuración del servidor de forma individual mediante esta opción. packet_size puede ser de 4096 bytes a 65 535 bytes. El valor predeterminado es 4096.

Aumentar el tamaño del paquete puede mejorar el rendimiento de las operaciones de copia masiva. Si solicita un paquete mayor pero el servidor no puede concederlo, se usa el valor predeterminado. Las estadísticas de rendimiento que genera la utilidad bcp muestran el tamaño del paquete usado.

-b batch_size

Especifica el número de filas por lote de datos importados. Cada lote se importa y se registra como una transacción separada que importa el lote entero antes de que se confirme la transacción. De forma predeterminada, bcp importa todas las filas del archivo de datos como un lote. Para distribuir las filas en varios lotes, especifique un valor de batch_size inferior al número de filas del archivo de datos. Si se produce un error en la transacción de un lote, solamente se revierten las inserciones del lote actual. Los lotes ya importados por transacciones confirmadas no se ven afectados por un error posterior.

La -b y la -h "ROWS_PER_BATCH=<bb>" sugerencia son mutuamente excluyentes. Use -b cuando desee que bcp controle el procesamiento por lotes explícitamente o use ROWS_PER_BATCH para sugerir al optimizador de servidores al enviar los datos como una sola transacción.

-h "sugerencias [, ... n]"

Se aplica a: Solo Windows. No se admite en Linux y macOS.

Especifica la sugerencia o sugerencias que se usarán durante una importación masiva de datos en una tabla o vista.

  • ORDER (columna [ASC | DESC] [, ...n])

    Indica el criterio de ordenación de los datos en el archivo de datos. El rendimiento de la importación masiva mejora si los datos que se importan se ordenan según el índice agrupado de la tabla, si existe. Si el archivo de datos se ordena en un orden diferente, es decir, distinto del orden de una clave de índice agrupada, o si no hay ningún índice agrupado en la tabla, se omite la ORDER cláusula . Los nombres de columna que proporcione deben ser nombres de columna válidos en la tabla de destino. De forma predeterminada, bcp supone que el archivo de datos no está ordenado. En las importaciones masivas optimizadas, SQL Server también valida que los datos importados estén ordenados.

  • ROWS_PER_BATCH = bb

    Número de filas de datos por lote (como bb). Se usa cuando no se especifica -b, lo que da lugar a que todo el archivo de datos se envíe al servidor como una sola transacción. El servidor optimiza la carga masiva según el valor bb. De forma predeterminada, ROWS_PER_BATCH es desconocido.

  • KILOBYTES_PER_BATCH = cc

    Número aproximado de kilobytes (KB) de datos por lote (igual que cc). De forma predeterminada, KILOBYTES_PER_BATCH es desconocido.

  • TABLOCK

    Especifica que se adquiere un bloqueo de nivel de tabla de actualización masiva durante la operación de carga masiva; de no ser así, se adquiere un bloqueo de nivel de fila. Esta indicación mejora significativamente el rendimiento porque mantener un bloqueo durante la operación de copia a granel reduce la contención de bloqueo en la tabla. Puede cargar una tabla simultáneamente desde varios clientes si la tabla no tiene índices y TABLOCK se especifica. De forma predeterminada, la opción table lock on bulkload de tabla determina el comportamiento de bloqueo. Para obtener más información, consulte sp_tableoption.

    Nota:

    Si la tabla de destino es un índice de almacén de columnas agrupado, no se requiere la sugerencia TABLOCK para la carga por parte de varios clientes simultáneos, ya que a cada hilo de ejecución se le asigna un grupo de filas independiente dentro del índice y los datos se cargan en él. Para obtener más información, consulte Índices de almacén de columnas: información general.

  • CHECK_CONSTRAINTS

    Especifica que durante la operación de importación masiva, se deben verificar todas las restricciones de la tabla o vista de destino. Sin la CHECK_CONSTRAINTS sugerencia, se omiten las restricciones CHECK y FOREIGN KEY, y después de la operación, la restricción en la tabla se marca como no confiable.

    Nota:

    UNIQUELas restricciones , PRIMARY KEYy NOT NULL siempre se aplican.

    En algún momento, deberá comprobar las restricciones de toda la tabla. Si la tabla no estaba vacía antes de la operación de importación masiva, el costo de volver a validar la restricción puede superar el costo de aplicar CHECK restricciones a los datos incrementales. Por lo tanto, normalmente puede habilitar la comprobación de restricciones durante una importación masiva incremental.

    Una situación en la que quizá desee que las restricciones estén deshabilitadas (comportamiento predeterminado) es si los datos de entrada contienen filas que infringen las restricciones. Al deshabilitar CHECK restricciones, puede importar los datos y, a continuación, usar instrucciones Transact-SQL para quitar los datos que no son válidos.

    Nota:

    El modificador -mmax_errors no se aplica a la comprobación de restricciones.

  • FIRE_TRIGGERS

    Al especificar esta opción con el argumento in , los desencadenadores de inserción definidos en la tabla de destino se ejecutan durante la operación de copia masiva. Si no especifica FIRE_TRIGGERS, no se ejecutan desencadenadores de inserción. FIRE_TRIGGERS se omite para los outargumentos , queryouty format .

-m max_errors

Especifica el número máximo de errores de sintaxis que pueden producirse antes de que se cancele la operación de bcp . Un error de sintaxis implica un error de conversión de datos en el tipo de datos de destino. El max_errors total excluye los errores que el servidor solo puede detectar, como las infracciones de restricciones.

Fila que la utilidad bcp no puede copiar se omite y se cuenta como un error. Si no incluye esta opción, el valor predeterminado es 10.

Nota:

La -m opción no se aplica al convertir los tipos de datos money o bigint .

-F primera_fila

Especifica el número de la primera fila que se exportará desde una tabla o que se importará desde un archivo de datos. Este parámetro requiere un valor mayor que (>) 0 pero menor que (<) o igual que el número total de filas. Si no especifica este parámetro, el valor predeterminado es la primera fila del archivo.

first_row puede ser un valor entero positivo hasta 2^63-1. -F first_row usa numeración basada en 1.

-L última_fila

Especifica el número de la última fila que se exportará desde una tabla o que se importará desde un archivo de datos. Este parámetro requiere un valor mayor que (>) 0 pero menor que (<) o igual que el número de la última fila. Si no especifica este parámetro, el valor predeterminado es la última fila del archivo.

last_row puede ser un valor entero positivo hasta 2^63-1.

-r row_term

Especifica el terminador de la fila. El valor predeterminado es \n (carácter de nueva línea). Use este parámetro para sustituir el terminador de fila predeterminado. Para obtener más información, vea Especificar terminadores de campo y fila (SQL Server).

Si especifica el terminador de fila en notación hexadecimal en un comando bcp, el valor se truncará en 0x00. Por ejemplo, si especifica 0x410041, se usará 0x41.

Si row_term comienza por un guion (-) o una barra diagonal (/), no incluya un espacio entre -r y el valor de row_term.

-t field_term

Especifica el terminador del campo. El valor predeterminado es \t (carácter de tabulación). Use este parámetro para invalidar el terminador de campo predeterminado. Para obtener más información, vea Especificar terminadores de campo y fila (SQL Server).

Si especifica el terminador de campo en notación hexadecimal en un comando bcp, el valor se truncará en 0x00. Por ejemplo, si especifica 0x410041, se usará 0x41.

Si field_term comienza por un guion (-) o una barra diagonal (/), no incluya un espacio entre -t y el valor de field_term.

Gestión de valores

-k

Especifica que las columnas vacías mantienen un valor NULL durante la operación, en lugar de insertar valores predeterminados para las columnas. Para obtener más información, vea Mantener valores NULL o usar valores predeterminados durante la importación en bloque (SQL Server).

-E

Especifica que la operación usa valores de identidad en el archivo de datos importado para la columna de identidad. Si no especifica -E, SQL Server omite los valores de identidad de esta columna en el archivo de datos que se importan y asigna automáticamente valores únicos en función de los valores de inicialización e incremento especificados durante la creación de la tabla. Para más información, consulte DBCC CHECKIDENT.

Si el archivo de datos no contiene valores para la columna de identidad de la tabla o vista, use un archivo de formato para especificar que se debe omitir la columna de identidad de la tabla o vista al importar datos. SQL Server asigna automáticamente valores únicos para la columna.

La opción -E tiene un requisito de permisos especial. Para más información, consulte la sección "Comentarios" más adelante en este tema.

E/S de archivos y registro

-i input_file

Se aplica a: Solo Windows. No se admite en Linux y macOS.

Especifica el nombre de un archivo de respuesta. El archivo contiene las respuestas a las preguntas del símbolo del sistema para cada campo de datos cuando se realiza una operación de copia masiva mediante el modo interactivo (-n, -c, -wo -N no se especifica).

Si input_file comienza por un guion (-) o una barra diagonal (/), no incluya un espacio entre -i y el valor de input_file.

-o archivo_salida

Se aplica a: Solo Windows. No se admite en Linux y macOS.

Especifica el nombre de un archivo que recibe la salida redirigida desde el símbolo del sistema.

Si output_file comienza con un guion (-) o una barra diagonal (/), no incluya un espacio entre -o y el valor de output_file.

-e err_file

Especifica la ruta completa de un archivo de error que se usa para almacenar las filas que la utilidad bcp no puede transferir del archivo a la base de datos. Los mensajes de error del comando bcp van a la estación de trabajo del usuario. Si no usa esta opción, no se crea un archivo de error.

Si err_file comienza con un guion (-) o una barra diagonal (/), no incluya un espacio entre -e y el valor de err_file.

Compatibilidad y control de versiones

-V { 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 }

Se aplica a: Solo Windows. No se admite en Linux y macOS.

Realiza la operación de copia masiva con tipos de datos de versiones anteriores de SQL Server. Esta opción no solicita cada uno de los campos, sino que utiliza los valores predeterminados.

  • 80 = SQL Server 2000 (8.x)
  • 90 = SQL Server 2005 (9.x)
  • 100 = SQL Server 2008 (10.0.x) y SQL Server 2008 R2 (10.50.x)
  • 110 = SQL Server 2012 (11.x)
  • 120 = SQL Server 2014 (12.x)
  • 130 = SQL Server 2016 (13.x)
  • 140 = SQL Server 2017 (14.x)
  • 150 = SQL Server 2019 (15.x)
  • 160 = SQL Server 2022 (16.x)
  • 170 = SQL Server 2025 (17.x)

Por ejemplo, para generar datos para tipos que SQL Server 2000 (8.x) no admite, pero se introdujeron en versiones posteriores, use la -V80 opción .

Para obtener más información, vea Importar datos con formato nativo y de caracteres de versiones anteriores de SQL Server.

Otras opciones

-R

Especifica que la utilidad bcp copia masivamente datos de moneda, fecha y hora en SQL Server mediante el formato regional definido para la configuración regional del equipo cliente. De forma predeterminada, bcp omite la configuración regional.

-v

Informa del número de versión y los derechos de autor de la utilidad bcp .

Observaciones

  • La utilidad bcp admite archivos de datos nativos compatibles con todas las versiones compatibles de SQL Server.

  • La utilidad bcp muestra solo los primeros 512 bytes de un mensaje de error.

Permisos

Una bcp out operación requiere SELECT permiso en la tabla de origen.

Una operación bcp in requiere mínimamente SELECT y permisos INSERT en la tabla de destino. Además, ALTER TABLE se requiere el permiso si se cumple alguna de las condiciones siguientes:

  • Existen restricciones y no se especifica la CHECK_CONSTRAINTS sugerencia.

    La deshabilitación de restricciones es el comportamiento predeterminado. Para habilitar las restricciones explícitamente, use la opción -h con la sugerencia CHECK_CONSTRAINTS.

  • Los desencadenadores existen y no se especifica la FIRE_TRIGGERS sugerencia.

    De forma predeterminada, los desencadenadores no se activan. Para activar desencadenadores explícitamente, use la opción -h con la indicación FIRE_TRIGGERS.

  • La opción -E se usa para importar valores de identidad de un archivo de datos.

Obtener ayuda

Contribuya a la documentación de SQL

¿Sabía que puede editar el contenido de SQL usted mismo? Si lo hace, no solo contribuirá a mejorar la documentación, sino que también se le reconocerá como colaborador de la página.

Para obtener más información, consulte Editar documentación de Microsoft Learn.