Compartir a través de


bcp, utilidad

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Base de datos SQL de Microsoft Fabric

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

Para usar bcp en Linux, consulte Instalación de las herramientas de línea de comandos sqlcmd y bcp de SQL Server en Linux. Si necesita información detallada sobre el uso de bcp con Azure Synapse Analytics, consulte Carga de datos con bcp.

La utilidad bcp se puede usar para importar un número elevado 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.

Nota:

Si usa bcp para hacer una copia de seguridad de los datos, cree un archivo de formato para registrar el formato de datos. Los archivos de datos de bcpno incluyen ningún esquema ni información de formato, de modo que si se quita una tabla o vista, y no tiene un archivo de formato, es posible que no pueda importar los datos.

Para conocer las convenciones que se emplean en la sintaxis de bcp, vea Convenciones de sintaxis de Transact-SQL.

Para bcp en Linux y macOS, consulte Consideraciones para bcp en Linux y macOS.

Descarga de la versión más reciente de la utilidad bcp

Las herramientas de la línea de comandos se encuentran en fase de disponibilidad general (GA), pero se lanzan con el paquete del instalador de SQL Server 2019 (15.x) y versiones posteriores.

Información de la versión

  • Número de versión: 15.0.4298.1
  • Número de compilación: 15.0.4298.1
  • Fecha de publicación: 7 de abril de 2023

bcp admite la autenticación de Microsoft Entra, incluida la compatibilidad con la autenticación multifactor (MFA) para Azure SQL Database, Base de Datos SQL en Microsoft Fabric y Azure Synapse Analytics.

Nota:

Microsoft Entra ID era conocido anteriormente como Azure Active Directory (Azure AD).

Requisitos del sistema

  • Windows 8, Windows 8.1, Windows 10, Windows 11
  • Windows Server 2016, Windows Server 2019, Windows Server 2022

Este componente requiere el último controlador ODBC 17 de Microsoft para SQL Server.

Para comprobar la versión de BCP, ejecute el comando bcp -v y confirme que la versión en uso es 15.0.4298.1 o una versión posterior.

Compatibilidad con TDS 8.0

La versión preliminar de SQL Server 2025 (17.x) presenta compatibilidad con TDS 8.0 para la utilidad bcp .

Sintaxis

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]]

Consideraciones y limitaciones

  • La utilidad bcp limita a 512 bytes los caracteres que aparecen en el mensaje de error. Solo se muestran los primeros 512 bytes del mensaje de error.

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).

  • El modo de caracteres es el formato preferido para los archivos de formato bcp y los archivos de datos que no contienen caracteres extendidos.

  • Una barra diagonal inversa (\) en un argumento de línea de comandos debe estar entrecomillada o escapada. Por ejemplo, para especificar una nueva línea como terminador de fila personalizado debe utilizar uno de los siguientes mecanismos:

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

Opciones de 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
[database_name.]esquema. {table_name | view_name | "query"}
{endata_file | outdata_file | queryoutdata_file | format nul}
-a packet_size
-b batch_size
-c
-C { ACP | OEM | RAW | code_page } No
-d database_name
-D
-e err_file
-E
-f format_file
-F first_row
-G Autenticación de Microsoft Entra
-h"hint [,... n]" No
-i input_file No
-k
-K application_intent
-l login_timeout
-L última_fila
-m max_errors
-n
-N No
-o output_file No
-P password
-q
-r row_term
-R
-S [server_name[\instance_name]]
-t field_term
-T
-U login_id
-u 1
-v
-V (80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 | 160 | 170 ) No
-w
-x No
-Y[s|m|o] 1

1 VERSIÓN preliminar de SQL Server 2025 (17.x) y versiones posteriores.

database_name

Nombre de la base de datos en la que reside la tabla o la vista especificadas. Si no se especifica, es la base de datos predeterminada para el usuario.

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

de esquema

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 se especifica el 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). Solamente pueden usarse como vistas de destino aquellas vistas en las que todas las columnas hacen referencia a la misma tabla. 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 los elementos que incruste en la consulta. queryout también se debe especificar cuando se copian datos 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 desde un archivo en la vista o la tabla de la base de datos. Especifica la dirección de la copia masiva.

fuera

Copia el contenido de la tabla o la 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. Cuando se importan datos de forma masiva a SQL Server, el archivo de datos contiene los datos que se van a copiar en la tabla o vista especificada. Cuando se realiza una exportación de datos de forma masiva desde SQL Server, el archivo de datos contiene los datos copiados desde la tabla o desde la 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 el contenido de una consulta y debe especificarse solo cuando se copian datos de forma masiva desde una consulta.

formato

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 opción format necesita la opción -f. Para crear un archivo con formato XML, también se necesita la opción -x. Para obtener más información, vea Crear un archivo de formato con bcp (SQL Server). Debe especificar nul como valor (format nul).

-a packet_size

Especifica el número de bytes por paquete de red enviados y recibidos por el servidor. Se puede establecer una opción de configuración de servidor con SQL Server Management Studio (o el procedimiento almacenado del sistema sp_configure ). No obstante, la opción de configuración de servidor puede sustituirse individualmente mediante esta opción. packet_size puede oscilar entre 4096 y 65 535 bytes (el valor predeterminado es 4096).

Un tamaño mayor de los paquetes puede mejorar el rendimiento de las operaciones de copia masiva. Si se solicita un paquete de mayor tamaño y no puede concederse, se usa el valor predeterminado. Las estadísticas de rendimiento generadas por 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 registra como una transacción aparte que importa el lote entero antes de confirmarse. De forma predeterminada, todas las filas del archivo de datos se importan en un solo 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 importados por transacciones confirmadas no se ven afectados por los errores posteriores.

No utilice esta opción con la opción -h "ROWS_PER_BATCH=<bb>".

-c

Realiza la operación con un tipo de datos de caracteres. Esta opción no solicita cada uno de los campos; usa char como tipo de almacenamiento, sin prefijos y con \t (carácter de tabulación) como separador de campos y \r\n (carácter de nueva línea) como terminador de filas. 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).

-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.

Debe especificar 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 la página de códigos o intercalación.

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

Las versiones anteriores a la versión 13 (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.

-d database_name

Especifica la base de datos a la que conectarse. De forma predeterminada, bcp se conecta a la base de datos predeterminada del usuario. Si se especifica -d <database_name> y un nombre de tres partes (database_name.schema.table que se ha pasado como primer parámetro a bcp), se producirá un error porque no es posible especificar dos veces el nombre de la base de datos. 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.

-d

Hace que el valor transmitido a la opción bcp -S se interprete como un nombre de origen de datos (DSN).

Se puede usar un DSN para:

  • Insertar opciones del controlador para simplificar las líneas de comandos,
  • aplicar las opciones de controlador que no son accesibles de otra manera desde la línea de comandos, como MultiSubnetFailover,
  • o para ayudar a proteger las credenciales confidenciales de ser reconocibles como argumentos de la línea de comandos.

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

-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 se 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.

-E

Especifica que se usará el valor o valores de identidad del archivo de datos importado para la columna de identidad. Si no se especifica -E, se omiten los valores de identidad de esta columna en el archivo de datos que se está importando y SQL Server asigna automáticamente valores únicos basados en los valores de inicialización y de incremento especificados durante la creación de la tabla. Para más información, consulte DBCC CHECKDB.

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.

-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 se usa -f con la opción format , se crea el archivo format_file especificado para la tabla o la vista especificada. 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 se usa con la opción in u out, -f necesita un archivo de formato que ya exista.

    Nota:

    El uso de un archivo de formato con la opción in u out es opcional. En ausencia de la opción -f, si no se especifica -n, -c, -w o -N, el comando solicita información sobre el formato y permite guardar las respuestas en un archivo de formato (cuyo 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.

-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 necesita un valor mayor que (>) 0, pero inferior (<) o igual (=) al número total de filas. En ausencia de 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 es de base 1.

-G

Se aplica solo a: Azure SQL Database, Base de datos SQL de Microsoft Fabric y Azure Synapse Analytics.

El cliente utiliza este interruptor para especificar que el usuario ha sido autenticado con Microsoft Entra ID. El -G interruptor requiere la 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.

Importante

En Linux y macOS, actualmente no se admite la autenticación interactiva de Microsoft Entra. La autenticación integrada de Microsoft Entra requiere la versión 17.6.1 o superiores de Microsoft ODBC Driver 17 for SQL Server y un entorno de Kerberos configurado correctamente.

Para comprobar si la versión de bcp es compatible con la autenticación de Microsoft Entra, escriba bcp --help y compruebe que aparece -G en la lista de argumentos disponibles.

  • Nombre de usuario y contraseña de Microsoft Entra

    Si desea utilizar un nombre de usuario y una contraseña de Microsoft Entra, puede proporcionar la opción -G con el nombre de usuario y la contraseña mediante el uso de las opciones -U y -P.

    En el ejemplo siguiente, se exportan datos utilizando las credenciales de nombre de usuario y contraseña de Microsoft Entra. En el ejemplo se exporta la tabla bcptest desde la base de datos testdb desde el servidor de Azure aadserver.database.windows.net y se almacenan los datos en el archivo c:\last\data1.dat:

    bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
    

    En el ejemplo siguiente se importan datos mediante las credenciales de un usuario de Microsoft Entra. En el ejemplo se importan datos desde el archivo c:\last\data1.dat en la tabla bcptest para la base de datos testdb en el servidor de Azure aadserver.database.windows.net con el nombre de usuario y la contraseña de Microsoft Entra:

    bcp bcptest in "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com -P xxxxx
    
  • Microsoft Entra integrado

    Para autenticación integrada de Microsoft Entra, proporcione la opción -G sin un nombre de usuario o contraseña. En esta configuración, se requiere que la cuenta de usuario de Windows actual (la cuenta en la que se ejecuta el comando bcp) está federada con Microsoft Entra ID:

    En el ejemplo siguiente se exportan datos mediante la autenticación integrada de Microsoft Entra. En el ejemplo se exporta la tabla bcptest de la base de datos testdb en el servidor lógico aadserver.database.windows.net y se almacenan los datos del archivo c:\last\data2.dat mediante credenciales de Windows federadas con Microsoft Entra ID:

    bcp bcptest out "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
    

    En el ejemplo siguiente se importan datos mediante la autenticación integrada de Microsoft Entra. En el ejemplo se importan datos de la tabla c:\last\data2.dat de archivos en la tabla bcptest de la base de datos testdb del servidor lógico aadserver.database.windows.net, mediante credenciales de Windows federadas con Microsoft Entra ID:

    bcp bcptest in "c:\last\data2.dat" -S aadserver.database.windows.net -d testdb -G -c
    
  • Managed Service Identity de Microsoft Entra

    Importante

    bcp está estrechamente acoplado con el driver. Las versiones principales de bcp y el driver con el que se crea un DSN deben ser las mismas. Para determinar su versión, ejecute bcp -v.

    La exportación de datos a través de bcp mediante Managed Service Identity en Windows requiere que se configure un DSN.

    Para configurar un DSN en una máquina que ejecuta Windows:

    1. En el teclado, presione la tecla Windows

    2. Escriba ODBC y seleccione la versión adecuada del administrador de orígenes de datos ODBC.

    3. Seleccione la pestaña DSN de usuario o DSN de sistema

    4. Seleccione Agregar y siga las indicaciones

    5. Cuando se le solicite un tipo de autenticación, seleccione Autenticación de Azure Managed Service Identity.

    6. Si tiene una identidad administrada asignada por el usuario, pegue la Object (principal) ID de la identidad en el cuadro Id. de inicio de sesión situado en la parte inferior de la pestaña autenticación.

    7. Para configurar el DSN, siga las indicaciones.

    Para ver un tutorial completo, incluidas las capturas de pantalla, consulte Creación y edición de DSN en la UI.

    Una vez configurado el DSN, se puede llamar al bcp mediante la marca -D para indicar que el valor pasado para -S es un DSN.

    bcp bcptest out "c:\last\data1.dat" -c -D -S myDSN -d testdb
    

  • Token de acceso de Microsoft Entra ID

    Se aplica a: Solo Linux y macOS. Windows no es compatible.

    Los usuarios de bcp 17.8 y versiones posteriores, en Linux y macOS, también pueden autenticarse con un token. En los ejemplos siguientes se usa PowerShell en Linux para recuperar un token de acceso.

    En este ejemplo se recupera un token de acceso y se coloca en un archivo para exportar datos mediante una identidad administrada asignada por el sistema.

    Connect-AzAccount -Identity
    $access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
    bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
    

    En este ejemplo se pasa un Client ID al parámetro -AccountId de Connect-AzAccount para recuperar un token de acceso y colocarlo en un archivo de token. A continuación, el token se usa para exportar datos mediante la identidad administrada asignada por el usuario especificada.

    Connect-AzAccount -Identity -AccountId 'client_id_of_user_assigned_managed_identity'
    $access_token | cut -f 1 | tr -d '\n' | iconv -f ascii -t UTF-16LE > /tmp/tokenFile
    bcp bcptest out data2.dat -S aadserver.database.windows.net -d testdb -G -P /tmp/tokenFile -c
    
  • Microsoft Entra interactivo

    Se aplica a: Solo Windows. No se admiten Linux ni macOS.

    La autenticación interactiva de Microsoft Entra, disponible para todas las versiones de Azure SQL y SQL Server 2022 (16.x) y versiones posteriores, permite usar un cuadro de diálogo interactivo para autenticarse, que también admite la autenticación multifactor.

    La autenticación interactiva de Microsoft Entra requiere bcpversión 15.0.1000.34 o posterior, y ODBC versión 17.2 o posterior.

    Para habilitar la autenticación interactiva, indique la opción -G solo con el nombre de usuario (-U), sin contraseña.

    En el ejemplo siguiente se exportan datos mediante la autenticación interactiva de Microsoft Entra, que incluye especificar el nombre de usuario de una cuenta de Microsoft Entra.

    El modo interactivo requiere que se especifique una contraseña manualmente, o en el caso de las cuentas que tengan la autenticación multifactor habilitada, complete el método de autenticación MFA configurado.

    bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U alice@aadtest.onmicrosoft.com
    

    En caso de que un usuario de Microsoft Entra sea una cuenta de usuario Windows de un dominio federado, el nombre de usuario introducido en la línea de comandos debe contener su dominio (por ejemplo, joe@contoso.com):

    bcp bcptest out "c:\last\data1.dat" -c -S aadserver.database.windows.net -d testdb -G -U joe@contoso.com
    

    Si los usuarios invitados existen en un inquilino específico de Microsoft Entra y forman parte de un grupo que existe en Azure SQL Database que tiene permisos de base de datos para ejecutar el comando bcp , se usa su alias de usuario invitado (por ejemplo, keith0@adventure-works.com).

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

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

Especifica las sugerencias que deben usarse durante una importación de datos masiva en una tabla o en una 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 importados se ordenan según el índice clúster de la tabla, si lo hay. 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 facilitados deben ser nombres 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, por lo que el archivo de datos completo se envía al servidor en 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. Una tabla se puede cargar simultáneamente desde varios clientes si la tabla no tiene índices y TABLOCK se especifica. De forma predeterminada, el comportamiento de bloqueo viene determinado por la opción de tabla table lock on bulkload. 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 deben comprobarse todas las restricciones de la tabla o vista de destino durante la operación de importación masiva. Sin la CHECK_CONSTRAINTS sugerencia, se omiten las CHECK, restricciones y después de la FOREIGN KEY 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, se recomienda que se habilite normalmente la comprobación de restricciones durante una importación incremental masiva.

    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. Con CHECK restricciones deshabilitadas, puede importar los datos y, a continuación, usar instrucciones Transact-SQL para quitar los datos que no son válidos.

    bcp valida y comprueba ahora los datos, y ello puede dar lugar a errores en los scripts si se ejecutan con datos no válidos de un archivo.

    Nota:

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

  • DISPARADORES_DE_FUEGO

    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 FIRE_TRIGGERS no se especifica, no se ejecuta ningún desencadenador de inserción. FIRE_TRIGGERS se omite para los outargumentos , queryouty format .

-i input_file

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

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

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

-k

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

-K intención_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 -Kno se especifica, la utilidad bcpno admite la conectividad a una réplica secundaria en un grupo de disponibilidad Always On. Para obtener más información, consulte Descarga de 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 está dentro de ese rango, bcp genera un mensaje de error. Un valor de 0 especifica un tiempo de espera infinito.

-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 superior a (>) 0, pero inferior (<) o igual (=) al número de la última fila. En ausencia de este parámetro, el valor predeterminado es la última fila del archivo.

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

-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 total de max_errors excluye cualquier error que pueda detectarse solamente en el servidor, como las infracciones de restricciones.

Si una fila no puede copiarse con la utilidad bcp, se omite y se cuenta como un error. Si no se incluye esta opción, el valor predeterminado es 10.

Nota:

Además, la opción -m no es válida en la conversión de tipos de datos dinero o bigint .

-n

Realiza la operación de copia masiva con los tipos de datos nativos (base de datos) de los datos. Esta opción no realiza una petición para cada uno de los campos, sino que usa los valores nativos.

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

-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)).

La advertencia puede omitirse. Una manera de resolver esta advertencia es usar -n en lugar de -N.

-o archivo_de_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 por un guion (-) o una barra diagonal (/), no incluya un espacio entre -o y el valor de output_file.

-P password

Especifica la contraseña para el identificador de inicio de sesión. Si no se usa esta opción, el comando bcp solicitará una contraseña. Si esta opción se usa 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 password comienza por un guion (-) o una barra diagonal (/), no incluya un espacio entre -P y el valor de password.

-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 una base de datos, un propietario, una tabla o un nombre de 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.

-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.

-R

Especifica que se realice la copia masiva de datos de moneda, fecha y hora en SQL Server con el formato regional definido para la configuración regional del equipo cliente. De forma predeterminada, la configuración regional se omite.

-S [server_name[\instance_name]]

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

Si no se especifica ningún servidor, la utilidad bcp se conecta a la instancia predeterminada de SQL Server en el equipo local. Esta opción es necesaria cuando se ejecuta un comando bcp desde un equipo remoto de la red o desde una instancia local con nombre. Para establecer una conexión con la instancia predeterminada de SQL Server en un servidor, especifique únicamente server_name. Para conectar con una instancia con nombre de SQL Server, especifique server_name**\**instance_name.

-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.

-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 se especifica -T, es necesario especificar -U y -P para conectarse correctamente.

Importante

Si la utilidad bcp se conecta a SQL Server mediante una conexión de confianza que usa seguridad integrada, use la opción -T (conexión de confianza) en lugar de la combinación user name y password. Cuando la utilidad BCP está conectada a SQL Database o Azure Synapse Analytics, no se admite la autenticación de Windows o Microsoft Entra. Use las opciones -U y -P.

-U login_id

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

-U

Se aplica a:bcp versión 18 y versiones posteriores.

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

-v

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

-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) Versión preliminar

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

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

-w

Realiza la operación de copia masiva con 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).

-X

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

Esta opción se usa con las opciones format y -fformat_file, y genera un archivo de formato basado en XML en lugar del archivo de formato predeterminado, que no es XML. El modificador -x no funciona cuando se importan o exportan datos. Genera un error si se usa sin format ni -fformat_file.

-Y[s|m|o]

Se aplica a:bcp versión 18 y versiones posteriores.

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.

Comentarios

  • La utilidad bcp 13.0 se instala al instalar las herramientas de Microsoft SQL Server 2019 (15.x). Si las herramientas se instalan para varias versiones de SQL Server, en función del orden de los valores de la PATH variable de entorno, es posible que use el cliente bcp anterior en lugar del cliente bcp 13.0. Esta variable de entorno define el conjunto de directorios que Windows usa para buscar archivos ejecutables. Para saber qué versión está usando, ejecute el comando bcp -v en el símbolo del sistema de Windows. Para obtener información sobre cómo establecer la ruta de acceso del comando en la PATH variable de entorno, consulte Variables de entorno o busque Variables de entorno en la Ayuda de Windows.

    Para asegurarse de que la versión de la utilidad bcp que se está ejecutando es la más reciente, debe quitar las versiones anteriores de bcp.

    Para determinar dónde están instaladas todas las versiones de la utilidad bcp, escriba lo siguiente en el símbolo del sistema:

    where bcp.exe
    
  • La utilidad bcp también se puede descargar por separado desde el Feature Pack de Microsoft SQL Server 2016. Seleccione ENU\x64\MsSqlCmdLnUtils.msi o ENU\x86\MsSqlCmdLnUtils.msi.

  • Los archivos con formato XML solamente se admiten cuando se instalan herramientas de SQL Server con SQL Server Native Client.

  • Para obtener información sobre dónde encontrar y cómo ejecutar la utilidad bcp, y sobre las convenciones de sintaxis de las utilidades de la línea de comandos, consulte Utilidades de la línea de comandos de SQL (Motor de base de datos).

  • Para obtener información sobre cómo preparar datos para operaciones de importación o exportación masivas, vea Preparar los datos para exportación o importación en bloque.

  • Para obtener más información sobre cuándo se incluyen en el registro de transacciones las operaciones de inserción de filas que se efectúan durante una importación en bloque, vea Requisitos previos para el registro mínimo durante la importación en bloque.

  • Uso de caracteres especiales adicionales

    <, >, |, & y ^ son caracteres especiales del shell de comandos y deben ir precedidos del carácter de escape (^) o incluidos entre comillas cuando se usan en una cadena (por ejemplo, "StringContaining&Symbol"). Si usa comillas para incluir una cadena que contenga uno de los caracteres especiales, las comillas se establecerán como parte del valor de la variable de entorno.

Compatibilidad de los archivos de datos nativos

En SQL Server, la utilidad bcp admite archivos de datos nativos compatibles con SQL Server, a partir de SQL Server 2000 (8.x).

Columnas calculadas y columnas de marca de tiempo

Los valores del archivo de datos que se importan para las columnas calculadas o timestamp se omiten y SQL Server asigna valores automáticamente. Si el archivo de datos no contiene valores para las columnas calculadas o de marca de tiempo de la tabla, use un archivo de formato para especificar que deben pasarse por alto las columnas calculadas o de marca de tempo de la tabla al importar los datos. SQL Server asigna valores para la columna automáticamente.

Las columnas calculadas y timestamp se copian en bloque desde SQL Server en un archivo de datos de la forma habitual.

Especificación de identificadores que contienen espacios o comillas

SQL Server pueden incluir caracteres tales como espacios insertados y comillas. Tales identificadores deben tratarse de la siguiente manera:

  • Cuando especifique un identificador o nombre de archivo que incluya un espacio o comillas en el símbolo del sistema, coloque el identificador entre comillas dobles (" ").

    Por ejemplo, el siguiente comando bcp out crea un archivo de datos denominado Currency Types.dat:

    bcp AdventureWorks2022.Sales.Currency out "Currency Types.dat" -T -c
    
  • Para especificar un nombre de base de datos que contenga un espacio o comillas, debe usar la opción -q.

  • Para los nombres de vista, tabla o propietario que contienen espacios insertados o comillas, puede hacer lo siguiente:

    • Especificar la opción -q, o bien

    • Incluir el nombre de vista, tabla o propietario entre corchetes ([]) dentro de las comillas.

Validación de datos

bcp valida y comprueba ahora los datos, y ello puede dar lugar a errores en los scripts si se ejecutan con datos no válidos de un archivo. Por ejemplo, bcp ahora comprueba que:

  • Las representaciones nativas de los tipos de datos float o real son válidas.

  • Los datos Unicode tienen una longitud de bytes uniforme.

Es posible que los formularios de datos no válidos que podían importarse de forma masiva en versiones anteriores de SQL Server no se carguen ahora, mientras que, en anteriores versiones, el error no se producía hasta que un cliente intentaba tener acceso a datos no válidos. La validación agregada evita sorpresas cuando se consultan los datos después de una carga masiva.

Exportación o importación masiva de documentos SQLXML

Para importar o exportar de forma masiva datos SQLXML, utilice uno de los tipos de datos siguientes en el archivo de formato.

Tipo de datos Efecto
SQLCHAR o SQLVARYCHAR Los datos se envían a la página de códigos del cliente o a la página de códigos implícita por la intercalación. Tiene el mismo efecto que especificar el modificador -c sin indicar un archivo de formato.
SQLNCHAR o SQLNVARCHAR Los datos se envían como datos Unicode. Tiene el mismo efecto que especificar el modificador -w sin indicar un archivo de formato.
SQLBINARY o SQLVARYBIN Los datos se envían sin realizar ninguna conversión.

Permisos

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

Una operación bcp in requiere mínimamente permisos SELECT/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_TRIGGER 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.

Nota:

Requerir ALTER TABLE permiso en la tabla de destino se introdujo en SQL Server 2005 (9.x). Este requisito puede provocar un error en los scripts bcp que no aplican desencadenadores y comprobaciones de restricciones si la cuenta de usuario no tiene ALTER TABLE permisos para la tabla de destino.

Procedimientos recomendados para el modo de carácter (-c) y el modo nativo (-n)

Esta sección contiene recomendaciones sobre el modo de carácter (-c) y el modo nativo (-n).

  • (Administrador o usuario) Cuando sea posible, utilice el formato nativo (-n) para evitar problemas con los separadores. Utilice el formato nativo para exportar e importar utilizando SQL Server. Exporte datos de SQL Server utilizando la opción -c o -w si los datos se van a importar a una base de datos que no es de SQL Server.

  • (Administrador) Compruebe los datos al usar bcp out. Por ejemplo, cuando se usa bcp out, bcp iny, a continuación bcp out , se comprueba que los datos se exportan correctamente y que los valores del terminador no se usan como parte de algún valor de datos. Considere la posibilidad de reemplazar los terminadores predeterminados (utilizando las opciones -t y -r) por valores hexadecimales aleatorios para evitar conflictos entre los valores de terminador y los valores de datos.

  • (Usuario) Utilice un terminador largo y único (cualquier secuencia de bytes o caracteres) para minimizar la posibilidad de conflicto con el valor de cadena real. Esto se puede realizar utilizando las opciones -t y -r.

Ejemplos

Los ejemplos de esta sección usan la base de datos de ejemplo WideWorldImporters para SQL Server 2016 (13.x) y versiones posteriores, Azure SQL Database y Azure SQL Managed Instance. WideWorldImporters se puede descargar desde https://github.com/Microsoft/sql-server-samples/releases/tag/wide-world-importers-v1.0. Consulte Instrucciones RESTORE para conocer la sintaxis para restaurar la base de datos de ejemplo.

Condiciones de prueba de ejemplo

Salvo que se especifique lo contrario, en los ejemplos se asume que se utiliza Autenticación de Windows y que se dispone de una conexión de confianza con la instancia de servidor en la que se ejecuta el comando bcp. En muchos de los ejemplos, se usa un directorio llamado D:\bcp.

El siguiente script de Transact-SQL crea una copia vacía de la WideWorldImporters.Warehouse.StockItemTransactions tabla y, a continuación, agrega una restricción de clave principal:

USE WideWorldImporters;
GO

SET NOCOUNT ON;

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

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

Puede truncar la tabla StockItemTransactions_bcp según sea necesario:

TRUNCATE TABLE WideWorldImporters.Warehouse.StockItemTransactions_bcp;

A Identificar la versión de la utilidad bcp

En el símbolo del sistema, escriba el siguiente comando:

bcp -v

B. Copiar filas de tablas en un archivo de datos (con una conexión de confianza)

En los siguientes ejemplos se ilustra la opción out de la tabla WideWorldImporters.Warehouse.StockItemTransactions.

  • Básico

    En este ejemplo se crea un archivo de datos con el nombre StockItemTransactions_character.bcp y se usa el formato de caracteres para copiar los datos de la tabla en ese archivo.

    En el símbolo del sistema, escriba el siguiente comando:

    bcp WideWorldImporters.Warehouse.StockItemTransactions out D:\bcp\StockItemTransactions_character.bcp -c -T
    
  • Expandido

    En este ejemplo se crea un archivo de datos con el nombre StockItemTransactions_native.bcp y se usa el formato nativo para copiar los datos de la tabla en ese archivo. En el ejemplo también se especifica el número máximo de errores de sintaxis, un archivo de error y un archivo de salida.

    En el símbolo del sistema, escriba el siguiente comando:

    bcp WideWorldImporters.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 y Output_out.log. Error_out.log debe estar en blanco. Compare los tamaños de archivo entre StockItemTransactions_character.bcp y StockItemTransactions_native.bcp.

C. Copiar filas de tablas en un archivo de datos (con autenticación de modo mixto)

En el siguiente ejemplo, se ilustra la opción out de la tabla WideWorldImporters.Warehouse.StockItemTransactions. En este ejemplo se crea un archivo de datos con el nombre StockItemTransactions_character.bcp y se usa el formato de caracteres para copiar los datos de la tabla en ese archivo.

El ejemplo asume que utiliza autenticación de modo mixto, y debe utilizar el modificador -U para especificar su ID de inicio de sesión. Además, a menos que se esté conectando a la instancia predeterminada de SQL Server en el equipo local, use el modificador -S para especificar el nombre del sistema y, opcionalmente, un nombre de instancia.

En un símbolo del sistema, escriba el comando siguiente (el sistema le pedirá una contraseña):

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

D. Copiar datos de un archivo en una tabla

En los ejemplos siguientes, se ilustra la opción in en la tabla WideWorldImporters.Warehouse.StockItemTransactions_bcp con los archivos que se crearon anteriormente.

  • Básico

    En este ejemplo se usa el archivo de datos StockItemTransactions_character.bcp que se creó anteriormente.

    En el símbolo del sistema, escriba el siguiente comando:

    bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp IN D:\bcp\StockItemTransactions_character.bcp -c -T
    
  • Expandido

    En este ejemplo se usa el archivo de datos StockItemTransactions_native.bcp que se creó anteriormente. En el ejemplo también se usa la sugerencia TABLOCK, se especifica el tamaño del lote, el número máximo de errores de sintaxis, un archivo de error y un archivo de salida.

    En el símbolo del sistema, escriba el siguiente comando:

    bcp WideWorldImporters.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 y Output_in.log.

E. Copiar una columna específica en un archivo de datos

Para copiar una columna específica, puede usar la opción queryout. El siguiente ejemplo copia únicamente la columna StockItemTransactionID de la tabla Warehouse.StockItemTransactions en un archivo de datos.

En el símbolo del sistema, escriba el siguiente comando:

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

F. Copiar una fila específica en un archivo de datos

Para copiar una fila específica, puede usar la opción queryout. El siguiente ejemplo copia únicamente la fila correspondiente a la persona con el nombre Amy Trefl de la tabla WideWorldImporters.Application.People en un archivo de datos Amy_Trefl_c.bcp.

Nota:

El -d conmutador se usa para identificar la base de datos.

En el símbolo del sistema, escriba el siguiente comando:

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

G. Copiar datos de una consulta en un archivo de datos

Para copiar el conjunto de resultados de una instrucción Transact-SQL en un archivo de datos, use la opción queryout . El ejemplo siguiente copia los nombres de la tabla WideWorldImporters.Application.People , ordenados por nombre completo, en el archivo de datos People.txt .

Nota:

El modificador -t se usa para crear un archivo delimitado por comas.

En el símbolo del sistema, escriba el siguiente comando:

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

H. Crear archivos de formato

El ejemplo siguiente crea tres archivos de formato distintos para la tabla Warehouse.StockItemTransactions en la base de datos WideWorldImporters . Revise el contenido de cada archivo creado.

En un símbolo del sistema, escriba los comandos siguientes:

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

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

REM XML character format
bcp WideWorldImporters.Warehouse.StockItemTransactions format nul -f D:\bcp\StockItemTransactions_c.xml -x -c -T

Nota:

Para usar el modificador -x , debe contar con un cliente bcp 9.0. Para obtener información sobre cómo usar el cliente bcp 9.0, vea la sección Comentarios .

Para obtener más información, vea Usar archivos de formato no XML (SQL Server) y archivos de formato XML (SQL Server).

I. Usar un archivo de formato para importar de bloque o bcp

Para usar un archivo de formato creado anteriormente al importar datos a una instancia de SQL Server, use el modificador -f con la opción in . Por ejemplo, el siguiente comando copia de forma masiva el contenido de un archivo de datos, StockItemTransactions_character.bcp, en una copia de la tabla Warehouse.StockItemTransactions_bcp mediante el archivo de formato creado anteriormente, StockItemTransactions_c.xml.

Nota:

El modificador -L se usa para importar únicamente los 100 primeros registros.

En el símbolo del sistema, escriba el siguiente comando:

bcp WideWorldImporters.Warehouse.StockItemTransactions_bcp in D:\bcp\StockItemTransactions_character.bcp -L 100 -f D:\bcp\StockItemTransactions_c.xml -T

Nota:

Los archivos de formato son útiles cuando los campos del archivo de datos son diferentes a los de las columnas de la tabla; por ejemplo, en su numeración, orden o tipos de datos. Para obtener más información, vea Archivos de formato para importar o exportar datos (SQL Server).

J. Especificar una página de código

En el siguiente ejemplo de código parcial, se muestra la importación de bcp al especificar una página de código 65001:

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

K. Ejemplo de archivo de salida con un campo personalizado y terminadores de fila

Este ejemplo muestra dos archivos de muestra, generados por bcp utilizando un campo personalizado y terminadores de fila.

  1. Cree una tabla dbo.T1 en la base de datos tempdb, con dos columnas, ID y Name.

    USE tempdb;
    GO
    
    CREATE TABLE dbo.T1 (ID INT, [Name] NVARCHAR (20));
    GO
    
    INSERT INTO dbo.T1 VALUES (1, N'Natalia');
    INSERT INTO dbo.T1 VALUES (2, N'Mark');
    INSERT INTO dbo.T1 VALUES (3, N'Randolph');
    GO
    
  2. Genere un archivo de salida a partir de la tabla de ejemplo dbo.T1, utilizando un terminador de campo personalizado.

    En este ejemplo, el nombre del servidor es MYSERVERy -t , especifica el terminador de campo personalizado.

    bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t ,
    

    Este es el conjunto de resultados.

    1,Natalia
    2,Mark
    3,Randolph
    
  3. Generar un archivo de salida a partir de la tabla de ejemplo dbo.T1, utilizando un terminador de campo personalizado y un terminador de fila personalizado.

    En este ejemplo, el nombre del servidor es MYSERVER, -t , especifica el terminador de campo personalizado y -r : especifica el terminador de fila personalizado.

    bcp dbo.T1 out T1.txt -T -S MYSERVER -d tempdb -w -t , -r :
    

    Este es el conjunto de resultados.

    1,Natalia:2,Mark:3,Randolph:
    

    Nota:

    El terminador de fila siempre se añade, incluso al último registro. El terminador de campo, sin embargo, no se añade al último campo.

Ejemplos adicionales

Los siguientes artículos incluyen ejemplos sobre el uso de bcp:

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.