Especificar formatos de datos por razones de compatibilidad mediante bcp

Cuando exporta de manera masiva datos de Microsoft SQL Server para importarlos en otro programa, por ejemplo, otro programa de bases de datos, los formatos de datos predeterminados (nativo, de carácter o Unicode) de la tabla de origen pueden ser incompatibles con el diseño de datos esperado por el otro programa. Si existe algún tipo de incompatibilidad, al exportar los datos debe describir el diseño de los mismos.

Nota

Si no está familiarizado con los formatos de datos para su importación o exportación, vea Formatos de datos para importar o exportar datos.

El comando bcp le permite especificar la estructura de cada campo en función de los siguientes atributos de formato de datos:

  • Tipo de almacenamiento en archivo

    El tipo de almacenamiento en archivo describe cómo se almacenan los datos en el archivo de datos. La información se puede exportar a un archivo de datos como el tipo de tabla de base de datos correspondiente (formato nativo), como su representación en caracteres (formato de caracteres) o como cualquier tipo de datos que admita la conversión implícita (por ejemplo, si copia datos smallint como datos int). Los tipos de datos definidos por el usuario se exportan como sus tipos base correspondientes. Para obtener más información, vea Especificar el tipo de almacenamiento en archivo mediante bcp.

  • Longitud de prefijo

    Para proporcionar el almacenamiento en archivo más compacto al exportar de forma masiva datos en formato nativo a un archivo de datos, el comando bcp precede cada campo con uno o varios caracteres que indican la longitud del campo. Estos caracteres se denominan caracteres de prefijo de longitud. Para obtener más información, vea Especificar longitud de prefijo en archivos de datos.

  • Longitud de campo

    La longitud de campo indica el número máximo de caracteres necesarios para representar los datos en formato de carácter. La longitud de campo ya se conoce si los datos se almacenan en el formato nativo. Para obtener más información, vea Especificar la longitud de campo mediante bcp.

  • Terminador de campo

    En el caso de campos de datos de caracteres, los caracteres de terminación le permiten marcar el final de cada campo en un archivo de datos (utilizando un terminador de campo) y el final de cada fila (usando un terminador de fila). Los caracteres de terminación son un modo de indicar a los programas que leen el archivo de datos dónde termina un campo o una fila y dónde comienza otro. Para obtener más información, vea Especificar terminadores de campo y de fila.

Información general sobre peticiones específicas de campos

Si un comando bcp interactivo contiene la opción in o out pero no contiene el modificador de formato de archivo (-f) o un modificador de formato de datos (-n, -c, -w o -N), cada columna de la tabla de origen o de destino, el comando solicita a su vez cada uno de los atributos precedentes. En cada petición, el comando bcp proporciona un valor predeterminado basado en el tipo de datos de la columna de la tabla de SQL Server. Si acepta el valor predeterminado para todas las peticiones, se obtiene el mismo resultado que si especifica un formato nativo (-n) en la línea de comandos. Cada petición muestra un valor predeterminado entre corchetes: [default]. Para aceptar el valor predeterminado que se muestra, presione la tecla ENTRAR. Para especificar un valor distinto del predeterminado, escriba el nuevo valor cuando se le solicite.

Ejemplo

El siguiente ejemplo utiliza el comando bcp para exportar interactivamente datos masivos desde la tabla HumanResources.myTeam al archivo myTeam.txt. Antes de que pueda ejecutar el ejemplo, debe crear esta tabla. Para obtener información sobre la tabla y cómo crearla, vea Crear la tabla HumanResources.myTeam.

El comando no especifica ni un archivo de formato ni un tipo de datos, lo que ocasiona que bcp solicite información sobre el formato de los datos. En el símbolo del sistema de Microsoft Windows, escriba:

bcp AdventureWorks2008R2.HumanResources.myTeam out myTeam.txt -T

Para cada columna, bcp solicita los valores específicos de los campos. El siguiente ejemplo muestra las peticiones específicas de los campos de las columnas EmployeeID y Name de la tabla y sugiere el tipo de almacenamiento de archivo predeterminado (el formato nativo) para cada columna. Las longitudes de prefijo de la columna EmployeeID y Name son 0 y 2, respectivamente. El usuario especifica una coma (,) como terminador de cada campo.

Enter the file storage type of field EmployeeID [smallint]:

Enter prefix-length of field EmployeeID [0]:

Enter field terminator [none]:,

Enter the file storage type of field Name [nvarchar]:

Enter prefix length of field Name [2]:

Enter field terminator [none]:,

.

.

.

Se muestran en orden peticiones equivalentes (cuando se necesitan) para cada una de las columnas de la tabla.

Almacenar datos campo a campo en un formato de archivo no XML

Después de especificar todas las columnas de una tabla, el comando bcp le solicita que genere, si lo desea, un archivo de formato no XML para almacenar la información campo a campo recientemente suministrada (vea el ejemplo procedente). Si elige generar un archivo de formato, puede hacerlo siempre que exporte datos fuera de esa tabla o importe datos estructurados de manera similar en SQL Server.

Nota

Puede utilizar el archivo de formato para importar datos de manera masiva desde el archivo de datos en una instancia de SQL Server o para exportar datos de manera masiva desde la tabla sin la necesidad de volver a especificar el formato. Para obtener más información, vea Archivos de formato para importar o exportar datos.

En el siguiente ejemplo se crea un archivo de formato no XML llamado myFormatFile.fmt:

Do you want to save this format information in a file? [Y/n] y

Host filename: [bcp.fmt]myFormatFile.fmt

El nombre predeterminado del archivo de formato es bcp.fmt, pero puede especificar un nombre de archivo diferente si así lo decide.

Nota

En el caso de un archivo de datos que utilice un solo formato de datos para su tipo de almacenamiento de archivo, por ejemplo, un formato de caracteres o un formato nativo, puede crear rápidamente un archivo de formato sin exportar o importar datos utilizando la opción format. Este enfoque tiene las ventajas de resultar sencillo y permitirle crear un archivo de formato XML o no XML. Para obtener más información, vea Crear un archivo de formato.

En esta sección

Esta sección contiene los siguientes temas.

Tema

Atributo de formato de datos

Especificar el tipo de almacenamiento en archivo mediante bcp

Contiene información sobre cómo especificar el tipo de almacenamiento de archivo en un comando bcp.

Especificar longitud de prefijo en archivos de datos

Contiene información sobre cómo especificar la longitud de prefijo en un comando bcp.

Especificar la longitud de campo mediante bcp

Contiene información sobre cómo especificar la longitud de campo en un comando bcp.

Especificar terminadores de campo y de fila

Contiene información sobre cómo especificar terminadores de campo y fila en un comando bcp.

Almacenamiento de datos en formato de caracteres

Contiene información sobre cómo se almacenan los datos formateados como caracteres en un archivo de datos exportados.