Compartir a través de


bcp (utilidad)

Actualizado: 12 de diciembre de 2006

La utilidad bcp copia datos de forma masiva entre una instancia de Microsoft SQL Server 2005 y un archivo de datos en un formato especificado por el usuario. 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 utiliza con la opción queryout, la utilidad no exige 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.

Icono de vínculo a temas Si desea obtener información acerca de las convenciones de sintaxis de bcp, vea Utilidades del símbolo del sistema.

Sintaxis

bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
    {in | out | queryout | format} data_file
    [-mmax_errors] [-fformat_file] [-x] [-eerr_file]
    [-Ffirst_row] [-Llast_row] [-bbatch_size]
    [-n] [-c] [-N] [-w] [-V (60 | 65 | 70 | 80)] [-6] 
    [-q] [-C { ACP | OEM | RAW | code_page } ] [-tfield_term] 
    [-rrow_term] [-iinput_file] [-ooutput_file] [-apacket_size]
    [-Sserver_name[\instance_name]] [-Ulogin_id] [-Ppassword]
    [-T] [-v] [-R] [-k] [-E] [-h"hint [,...n]"]

Argumentos

  • database_name
    Es el nombre de la base de datos en la que reside la tabla o vista especificada. Si no se especifica, es la base de datos predeterminada para el usuario.
  • owner
    Es el nombre del propietario de la tabla o vista. El argumento owner es opcional si el usuario que realiza la operación es propietario de la tabla o vista especificada. Si no se especifica owner y el usuario que realiza la acción no es el propietario de la tabla o la vista especificada, SQL Server 2005 devuelve un mensaje de error y se cancela la operación.
  • table_name
    Es el nombre de la tabla de destino cuando se importan datos en SQL Server (in), y la tabla de origen cuando se exportan datos de SQL Server (out).
  • view_name
    Es el nombre de la vista de destino cuando se copian datos en SQL Server (in), y la vista de origen cuando se copian datos de SQL Server (out). Sólo pueden utilizarse 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 (Transact-SQL).
  • "query"
    Es una consulta Transact-SQL que devuelve un conjunto de resultados. Si la consulta devuelve varios conjuntos de resultados, como una instrucción SELECT que especifica una cláusula COMPUTE, sólo se copiará en el archivo de datos el primer conjunto de resultados; los conjuntos de resultados siguientes se omiten. Utilice comillas dobles para la consulta y comillas simples para cualquier elemento incrustado en la consulta. También debe especificar queryout al realizar copias de datos masivas desde una consulta.
  • in | out | queryout | format
    Especifica la dirección de la copia masiva, de la siguiente manera:

    • in copia desde un archivo en la vista o la tabla de la base de datos.

      [!NOTA] La utilidad bcp incluida en SQL Server 6.5 no permite la copia masiva en tablas que contienen tipos de datos sql_variant o bigint.

    • out copia desde la tabla o la vista de la base de datos en un archivo. Al extraer datos, tenga en cuenta que la utilidad bcp representa una cadena vacía como nula y una cadena nula como vacía.

    • queryout copia desde una consulta y debe especificarse sólo cuando se copian datos de forma masiva desde una consulta.

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

  • data_file
    Es la 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 un máximo de 2.147.483.647 filas.

    ms162802.note(es-es,SQL.90).gifImportante:
    Para la opción format, debe especificar nul como valor de data_file (formatnul).
  • -mmax_errors
    Especifica el número máximo de errores de sintaxis que se pueden producir 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 max_errors excluye cualquier error que se pueda detectar sólo en el servidor, como las infracciones de restricciones.

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

    [!NOTA] La opción -m tampoco se aplica a la conversión de tipos de datos money o bigint.

  • -fformat_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 utiliza -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.

    • Si se utiliza con la opción in u out, -f requiere un archivo de formato existente.

      [!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, -6 o -N, el comando solicita información de formato y permite guardar las respuestas en un archivo de formato (cuyo nombre de archivo predeterminado es Bcp.fmt).

  • -x
    Si se utiliza con las opciones format y -fformat_file, genera un archivo de formato basado en XML en lugar de un archivo de formato que no es XML. -x no funciona cuando se importan o exportan datos. Genera un error si se usa sin format ni -fformat_file.

    [!NOTA] Para utilizar el modificador -x, debe contar con un cliente bcp 9.0. Para obtener información acerca del uso del cliente bcp 9.0, vea la sección "Notas" más adelante en este tema.

  • -eerr_file
    Especifica la ruta completa de un archivo de error que se utiliza para almacenar filas que la utilidad bcp no puede transferir desde el 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 utiliza esta opción, no se creará el archivo de errores.
  • -Ffirst_row
    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 superior a (>) 0 pero inferior a (<) o igual que (=) el número total de filas. En ausencia de este parámetro, el valor predeterminado es la primera fila del archivo.
  • -Llast_row
    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 a (<) o igual al (=) el número de la última fila. En ausencia de este parámetro, el valor predeterminado es la última fila del archivo.
  • -bbatch_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, sólo se revierten las inserciones del lote actual. Los lotes importados por transacciones confirmadas no se ven afectados por errores posteriores.

    No utilice esta opción junto con la opción **h"**ROWS_PER_BATCH =bb".

    Para obtener más información, vea Administrar lotes para la importación masiva.

  • -n
    Realiza la operación de copia masiva con los tipos de datos nativos (base de datos) de los datos. Esta opción no efectúa una petición para cada campo, sino que utiliza los valores nativos.

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

  • -c
    Realiza la operación con un tipo de datos de carácter. Esta opción no realiza una petición para cada campo; utiliza char como tipo de almacenamiento, sin prefijos y con \t (carácter de tabulador) como separador de campos y \r\n (carácter de nueva línea) como terminador de filas.

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

  • -N
    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 desde 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 ANSI extendidos y desee aprovechar el rendimiento del modo nativo. -N no se puede usar con SQL Server 6.5 o versiones anteriores.

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

  • -w
    Realiza la operación de copia masiva con caracteres Unicode. Esta opción no realiza una petición para cada campo; utiliza nchar como tipo de almacenamiento, sin prefijos, con \t (carácter de tabulador) como separador de campos y \n (carácter de nueva línea) como terminador de filas. Esta opción no se puede usar con SQL Server 6.5 o versiones anteriores.

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

  • -V ( 60| 65| 70| 80)
    Realiza la operación de copia masiva con tipos de datos de versiones anteriores de SQL Server. Esta opción no realiza una petición para cada campo, sino que utiliza los valores predeterminados. Por ejemplo, para realizar una copia de forma masiva de formatos de fecha admitidos por la utilidad bcp proporcionada con SQL Server 6.5 (pero que ya no es admitida por ODBC) en SQL Server 2005, utilice el parámetro -V65.

    ms162802.note(es-es,SQL.90).gifImportante:
    Cuando los datos se exportan de forma masiva desde SQL Server a un archivo de datos, la utilidad bcp no genera formatos de fecha de SQL Server 6.0 o SQL Server 6.5 para ningún dato de datetime o smalldatetime, aunque se especifique -V. Las fechas siempre se escriben en formato ODBC. Además, los valores NULL se escriben en las columnas de tipo bit con el valor 0, porque SQL Server 6.5 y las versiones anteriores no son compatibles con datos bit que acepten valores NULL.

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

  • -6
    Realiza la operación de copia masiva utilizando tipos de datos de SQL Server 6.0 o SQL Server 6.5. Esta opción sólo se admite por compatibilidad con versiones anteriores. Para SQL Server 7 y versiones posteriores, utilice la opción -V.
  • -q
    Ejecuta la instrucción SET QUOTED_IDENTIFIERS ON en la conexión entre la utilidad bcp y una instancia de SQL Server. Utilice 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. Englobe la totalidad del nombre de la vista o tabla en tres partes entre comillas (" ").

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

    Para obtener más información, vea Notas más adelante en este tema.

  • -C { ACP | OEM | RAW | code_page }
    Se permite por compatibilidad con versiones anteriores de SQL Server. Para SQL Server 7.0 y versiones posteriores, Microsoft recomienda especificar un nombre de intercalación para cada columna de un archivo de formato.

    Especifica la página de códigos de los datos del archivo de datos. code_page sólo es relevante si los datos contienen columnas char, varchar o text con valores de caracteres superiores a 127 o inferiores a 32.

    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. Ésta es la página de códigos que se utiliza de forma predeterminada si no se especifica -C.

    RAW

    No se realiza ninguna conversión entre páginas de códigos. Ésta es 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.

    Para obtener más información, vea Copiar datos entre distintas intercalaciones.

  • -tfield_term
    Especifica el terminador del campo. El valor predeterminado es \t (carácter de tabulador). Utilice este parámetro para sustituir el terminador de campo predeterminado. Para obtener más información, vea Especificar terminadores de campo y de fila.
  • -rrow_term
    Especifica el terminador de la fila. El valor predeterminado es \n (carácter de nueva línea). Utilice este parámetro para sustituir el terminador de fila predeterminado. Para obtener más información, vea Especificar terminadores de campo y de fila.
  • -iinput_file
    Especifica el nombre de un archivo de respuestas, que contiene respuestas a las preguntas del símbolo del sistema para cada campo de datos cuando se realiza una copia masiva utilizando el modo interactivo (-n, -c, -w, -6 o -N no especificado).
  • -ooutput_file
    Especifica el nombre de un archivo que recibe la salida redirigida desde el símbolo del sistema.
  • -apacket_size
    Especifica el número de bytes por paquete de red enviados y recibidos por el servidor. Es posible establecer una opción de configuración de servidor mediante 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 acepta valores de 4.096 a 65.535 bytes; el valor predeterminado es 4.096.

    Un tamaño mayor de los paquetes puede mejorar el rendimiento de las operaciones de copia masiva. Si se pide un tamaño de paquete mayor, pero no puede concederse, se utiliza el valor predeterminado. Las estadísticas de rendimiento generadas por la utilidad bcp muestran el tamaño del paquete utilizado.

  • -Sserver_name[ **\instance_name]
    Especifica la instancia de SQL Server a la que hay que conectarse. 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 conectar con la instancia predeterminada de SQL Server en un servidor, especifique sólo server_name. Para conectarse a una instancia con nombre de SQL Server 2005, especifique server_name
    \**instance_name.
  • -Ulogin_id
    Especifica el Id. de inicio de sesión para conectar con SQL Server.

    ms162802.security(es-es,SQL.90).gifNota de seguridad:
    Cuando la utilidad bcp se conecta con SQL Server mediante una conexión de confianza que utiliza seguridad integrada, utilice la opción -T (conexión de confianza) en lugar de la combinación user name y password.
  • -Ppassword
    Especifica la contraseña para el identificador de inicio de sesión. Si no se utiliza esta opción, el comando bcp le solicita una contraseña. Si se utiliza esta opción al final del símbolo del sistema sin especificar ninguna contraseña, bcp utiliza la contraseña predeterminada (NULL).

    ms162802.security(es-es,SQL.90).gifNota de seguridad:
    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 opción -U y otros modificadores (no especifique -P), presione ENTRAR y el comando le solicitará una contraseña. Este método garantiza que la contraseña se enmascare al especificarla.

  • -T
    Especifica que la utilidad bcp se conecte a SQL Server mediante una conexión de confianza usando la seguridad integrada. Las credenciales de seguridad del usuario de la red, login_id y password no son necesarias. Si no se especifica –T, tiene que especificar –U y –P para iniciar sesión correctamente.
  • -v
    Facilita información acerca del número de versión y de los derechos de autor de la utilidad bcp.
  • -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.
  • -E
    Especifica que se utilizará 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 importa y SQL Server 2005 asigna automáticamente valores únicos basados en los valores de inicialización y de incremento especificados durante la creación de la tabla.

    Si el archivo de datos no contiene valores para la columna de identidad de la tabla o vista, utilice un archivo de formato para especificar que se debe omitir la columna de identidad de la tabla o vista al importar los datos; SQL Server 2005 asigna automáticamente valores únicos para la columna. Para obtener más información, vea DBCC CHECKIDENT (Transact-SQL).

    La opción -E tiene un requisito de permisos especial. Para obtener más información, vea "Notas" más adelante en este tema.

    Para obtener más información acerca de la conservación de valores de identidad, vea Mantener valores de identidad al importar datos de forma masiva.

  • **-h"**hint[ ,... n] "
    Especifica las sugerencias que deben utilizarse durante una importación de datos masiva en una tabla o en una vista. No se puede utilizar esta opción cuando se realicen copias de datos masivas en SQL Server 6.x ni en versiones anteriores.

    • ORDER**(column[ASC | DESC] [,...n])**
      Indica el orden 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 agrupado de la tabla, si lo hay. Si el archivo de datos se ordena siguiendo otro criterio que no sea el orden de una clave de índice agrupado, o si no hay índice agrupado en la tabla, la cláusula ORDER se pasa por alto. 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.

      Para obtener más información, vea Controlar el criterio de ordenación en las importaciones masivas de datos.

    • ROWS_PER_BATCH **=**bb
      Número de filas de datos por lote (igual a bb). Se utiliza cuando no se especifica -b, con lo que se envía el archivo de datos completo al servidor en una sola transacción. El servidor optimiza la carga masiva según el valor bb. De forma predeterminada, el valor de ROWS_PER_BATCH es desconocido.

      Para obtener más información, vea Administrar lotes para la importación masiva.

    • KILOBYTES_PER_BATCH = cc
      Número aproximado de kilobytes (KB) de datos por lote (igual a cc). De forma predeterminada, el valor de KILOBYTES_PER_BATCH es desconocido.

      Para obtener más información, vea Administrar lotes para la importación masiva.

    • TABLOCK
      Especifica que se adquiere un bloqueo de tabla de actualización masiva para la duración de la operación de carga masiva; de lo contrario, se adquiere un bloqueo de fila. Esta sugerencia mejora notablemente el rendimiento, dado que, al mantenerse el bloqueo durante la operación de copia masiva, se reduce la contención en la tabla por bloqueo. Varios clientes pueden cargar una tabla simultáneamente si ésta no tiene índices y se especifica TABLOCK. De forma predeterminada, el comportamiento del bloqueo viene determinado por la opción table lock on bulk load.

      Para obtener más información, vea Controlar el comportamiento de bloqueo para la importación masiva.

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

      [!NOTA] Las restricciones UNIQUE, PRIMARY KEY y NOT NULL se exigen siempre.

      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 revalidar la restricción puede exceder el costo de aplicar restricciones CHECK 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 las restricciones CHECK deshabilitadas, puede importar los datos y después usar instrucciones de Transact-SQL para quitar los datos que no son válidos.

      [!NOTA] En SQL Server 2005, bcp impone una nueva validación de datos y nuevas comprobaciones de los datos que podrían dar lugar a errores en las secuencias de comandos existentes al ejecutarse en los datos no válidos de un archivo de datos.

      [!NOTA] El modificador -mmax_errors no se aplica a la comprobación de restricciones.

      Para obtener más información, vea Controlar comprobación de restricciones mediante operaciones de importación masiva.

    • FIRE_TRIGGERS
      Especificado con el argumento in, se ejecutarán todos los desencadenadores de inserción definidos en la tabla de destino durante la operación de copia masiva. Si no se especifica FIRE_TRIGGERS, no se ejecutará ningún desencadenador. FIRE_TRIGGERS se ignora con los argumentos out, queryout y format.

      Para obtener más información, vea Controlar la ejecución de desencadenadores al importar datos masivamente.

Notas

El cliente bcp 9.0 se instala cuando se instalan herramientas de Microsoft SQL Server en el sistema. Si se instalan herramientas de SQL Server 2005 y de SQL Server 2000, según el valor de la variable de entorno PATH, quizás utilice el cliente bcp anterior en vez del cliente bcp 9.0. Esta variable de entorno define el conjunto de directorios que Windows utiliza para buscar archivos ejecutables. Para saber qué versión está utilizando, ejecute el comando bcp/v en el símbolo del sistema de Windows. Para obtener información acerca del establecimiento de la ruta de comandos en la variable de entorno PATH, vea la Ayuda de Windows.

Los archivos con formato XML sólo se admiten cuando se instalan herramientas de SQL Server con SQL Native Client.

Para obtener información acerca de dónde encontrar o cómo ejecutar la utilidad bcp y de las convenciones de sintaxis de las utilidades del símbolo del sistema, vea Utilidades del símbolo del sistema.

Para obtener información acerca de la preparación de los datos para las operaciones de importación y exportación masivas, vea Preparar los datos para exportar o importar de forma masiva.

Para obtener información acerca de cuándo se registran en el registro de transacciones las operaciones de inserción de filas que se efectúan durante la importación masiva, vea Requisitos previos para el registro mínimo durante la importación masiva.

Columnas calculadas y columnas timestamp

Los valores del archivo de datos que se importa para las columnas calculadas o timestamp se omiten y SQL Server 2005 asigna valores automáticamente. Si el archivo de datos no contiene valores para las columnas calculadas o timestamp de la tabla, utilice un archivo de formato para especificar que se deben pasar por alto las columnas calculadas o timestamp de la tabla al importar datos; SQL Server asigna valores para la columna de forma automática.

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

Especificar identificadores que incluyen espacios o comillas

Los identificadores de SQL Server pueden incluir caracteres tales como espacios incrustados 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 AdventureWorks.Sales.Currency out "Currency Types.dat" -T -c
    
  • Para especificar un nombre de base de datos que contenga un espacio o comillas, debe utilizar la opción q.

  • Para los nombres de vista, tabla o propietario que contienen espacios incrustados 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.

Validar datos

En SQL Server 2005, bcp impone una nueva validación de datos y nuevas comprobaciones de los datos que podrían dar lugar a errores en las secuencias de comandos existentes al ejecutarse en los datos no válidos de un archivo de datos. Por ejemplo, bcp ahora comprueba que:

  • La representación nativa de los tipos de datos float o real es válida.
  • Los datos Unicode tienen una longitud de bytes uniforme.

Los formularios de datos no válidos que se podían importar de forma masiva en versiones anteriores de SQL Server podrían no cargarse ahora, mientras que, en anteriores versiones, el error no se producía hasta que un cliente intentaba tener acceso a los datos no válidos. La validación agregada minimiza 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 en la página de códigos del cliente o en la página de códigos indicada 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 operación bcp out requiere permisos SELECT en la tabla de origen.

Una operación bcp in requiere como mínimo permisos SELECT/INSERT en la tabla de destino. Además, se requiere el permiso ALTER TABLE si cualquiera de las siguientes afirmaciones es verdadera:

  • Existen restricciones y la sugerencia CHECK_CONSTRAINTS no se ha especificado.

    [!NOTA] La deshabilitación de restricciones es el comportamiento predeterminado. Para habilitar las restricciones de forma explícita, use la opción -h con la sugerencia CHECK_CONSTRAINTS.

  • Existen desencadenadores y la sugerencia FIRE_TRIGGER no se ha especificado.

    [!NOTA] De forma predeterminada, los desencadenadores no están activados. Para activarlos de forma explícita, use la opción -h con la sugerencia FIRE_TRIGGERS.

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

[!NOTA] El requisito del permiso ALTER TABLE en la tabla de destino es nuevo en SQL Server 2005. Este nuevo requisito puede hacer que las secuencias de comandos de bcp que no imponen las comprobaciones de restricciones y desencadenadores devuelvan un error si la cuenta de usuario no tiene los permisos de tabla ALTER para la tabla de destino.

Ejemplos

Esta sección contiene los siguientes ejemplos:

  • A. Copiar filas de tablas en un archivo de datos (con una conexión de confianza)
  • B. Copiar filas de tablas en un archivo de datos (con autenticación de modo mixto)
  • C. Copiar datos de un archivo en una tabla
  • D. Copiar una columna específica en un archivo de datos
  • E. Copiar una fila específica en un archivo de datos
  • F. Copiar datos de una consulta en un archivo de datos
  • G. Crear un archivo de formato no XML
  • H. Crear un archivo de formato XML
  • I. Utilizar un archivo de formato para importar de forma masiva con bcp

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

El siguiente ejemplo ilustra la opción out de la tabla AdventureWorks.Sales.Currency. Este ejemplo crea un archivo de datos con el nombre Currency.dat y copia los datos de la tabla en él usando el formato de caracteres. El ejemplo asume que se utiliza la autenticación de Windows y que se tiene una conexión de confianza con la instancia del servidor en la que se ejecuta el comando bcp.

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

bcp AdventureWorks.Sales.Currency out Currency.dat -T -c

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

El siguiente ejemplo ilustra la opción out de la tabla AdventureWorks.Sales.Currency. Este ejemplo crea un archivo de datos con el nombre Currency.dat y copia los datos de la tabla en él usando el formato de caracteres.

En el ejemplo se asume que utiliza autenticación de modo mixto. Debe utilizar el modificador -U para especificar el Id. de inicio de sesión. Asimismo, a menos que esté conectando con la instancia predeterminada de SQL Server en el equipo local, utilice el modificador -S para especificar el nombre del sistema y, opcionalmente, un nombre de instancia.

bcp AdventureWorks.Sales.Currency out Currency.dat -c -U<login_id> -S<server_name\instance_name>

El sistema le solicitará la contraseña.

C. Copiar datos de un archivo en una tabla

El siguiente ejemplo ilustra la opción in utilizando el archivo creado en el ejemplo anterior (Currency.dat). No obstante, en primer lugar, este ejemplo crea una copia vacía de la tabla de AdventureWorks Sales.Currency, Sales.Currency2, en la que se copian los datos. El ejemplo asume que se utiliza la autenticación de Windows y que se tiene una conexión de confianza con la instancia del servidor en la que se ejecuta el comando bcp.

Para crear la tabla vacía, en el Editor de consultas, escriba el siguiente comando:

USE AdventureWorks;
GO
SELECT * INTO AdventureWorks.Sales.Currency2 
FROM AdventureWorks.Sales.Currency WHERE 1=2

Para realizar una copia masiva de los datos de caracteres en la nueva tabla, es decir, para importar los datos, escriba el siguiente comando en un símbolo del sistema:

bcp AdventureWorks.Sales.Currency2 in Currency.dat -T -c

Para comprobar que el comando se ha ejecutado correctamente, muestre el contenido en el Editor de consultas y escriba:

USE AdventureWorks;
GO
SELECT * FROM Sales.Currency2

D. 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 sólo la columna Name de la tabla de Sales.Currency en un archivo de datos. El ejemplo asume que se utiliza la autenticación de Windows y que se tiene una conexión de confianza con la instancia del servidor en la que se ejecuta el comando bcp.

En el símbolo del sistema de Windows, escriba:

bcp "SELECT Name FROM AdventureWorks.Sales.Currency" queryout Currency.Name.dat -T -c

E. 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 sólo la fila del contacto con el nombre Jarrod Rana de la tabla de AdventureWorks.Person.Contact en un archivo de datos (Jarrod Rana.dat). El ejemplo asume que se utiliza la autenticación de Windows y que se tiene una conexión de confianza con la instancia del servidor en la que se ejecuta el comando bcp.

En el símbolo del sistema, escriba:

bcp "SELECT * FROM AdventureWorks.Person.Contact WHERE FirstName='Jarrod' AND LastName='Rana' "  queryout "Jarrod Rana.dat" -T -c

F. 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, utilice la opción queryout. El siguiente ejemplo copia los nombres de la tabla de AdventureWorks.Person.Contact, ordenados por el apellido y después por el nombre, en el archivo de datos Contacts.txt. El ejemplo asume que se utiliza la autenticación de Windows y que se tiene una conexión de confianza con la instancia del servidor en la que se ejecuta el comando bcp.

En el símbolo del sistema, escriba:

bcp "SELECT FirstName, LastName FROM AdventureWorks.Person.Contact ORDER BY LastName, Firstname" queryout Contacts.txt -c -T

G. Crear un archivo de formato no XML

En el siguiente ejemplo se crea un archivo de formato no XML, Currency.fmt, para la tabla Sales.Currency de la base de datos AdventureWorks. El ejemplo asume que se utiliza la autenticación de Windows y que se tiene una conexión de confianza con la instancia del servidor en la que se ejecuta el comando bcp.

En el símbolo del sistema, escriba:

bcp AdventureWorks.Sales.Currency format nul -T -c  -f Currency.fmt

Para obtener más información, vea Descripción de los archivos de formato no XML.

H. Crear un archivo de formato XML

El siguiente ejemplo crea un archivo de formato XML con el nombre Currency.xml para la tabla Sales.Currency de la base de datos AdventureWorks. El ejemplo asume que se utiliza la autenticación de Windows y que se tiene una conexión de confianza con la instancia del servidor en la que se ejecuta el comando bcp.

En el símbolo del sistema, escriba:

bcp AdventureWorks.Sales.Currency format nul -T -c -x -f Currency.xml

[!NOTA] Para utilizar el modificador -x, debe contar con un cliente bcp 9.0. Para obtener información acerca del uso del cliente bcp 9.0, vea la sección "Notas".

Para obtener más información, vea Descripción de los archivos de formato XML.

I. Utilizar un archivo de formato para importar de forma masiva con bcp

Para usar un archivo de formato creado anteriormente al importar datos en una instancia de SQL Server, utilice el modificador -f con la opción in. Por ejemplo, el siguiente comando copia de forma masiva el contenido de un archivo de datos, Currency.dat, en una copia de la tabla Sales.Currency (Sales.Currency2) mediante el archivo de formato creado anteriormente (Currency.xml). El ejemplo asume que se utiliza la autenticación de Windows y que se tiene una conexión de confianza con la instancia del servidor en la que se ejecuta el comando bcp.

En el símbolo del sistema, escriba:

bcp AdventureWorks.Sales.Currency2 in Currency.dat -T -f Currency.xml

[!NOTA] Los archivos de formato son útiles cuando los campos del archivo de datos difieren 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.

Otros ejemplos

Los siguientes temas incluyen ejemplos de uso de bcp:

Vea también

Otros recursos

Preparar los datos para exportar o importar de forma masiva
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
Importar datos en paralelo con bloqueo de tabla
SET QUOTED_IDENTIFIER (Transact-SQL)
sp_configure (Transact-SQL)
sp_tableoption (Transact-SQL)
Formatos de datos para importar o exportar datos
Archivos de formato para importar o exportar datos
Optimizar el rendimiento de la importación masiva
Acerca de las operaciones de importación y exportación masivas
Situaciones para la importación masiva y la exportación de datos

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

12 de diciembre de 2006

Contenido modificado:
  • Se corrigió la descripción de CHECK_CONSTRAINTS para indicar que esta sugerencia provoca que se ignoren las restricciones CHECK y FOREIGN KEY.

17 de julio de 2006

Contenido nuevo:
  • Se ha actualizado la descripción del argumento ORDER.
  • Se han agregado vínculos "Otros ejemplos" a temas que contienen ejemplos de bcp.

14 de abril de 2006

Contenido modificado:
  • Se actualizó la nota de la descripción de CHECK_CONSTRAINTS al eliminar FOREIGN KEY de la lista de restricciones que siempre se exigen.
  • Se actualizaron los requisitos del permiso ALTER TABLE.