Especificación de formatos de datos de compatibilidad con bcp (SQL Server)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

En este artículo se describen los atributos de formato de datos, las indicaciones específicas del campo y el almacenamiento de datos de campo por campo en un archivo de formato no xml del

comando SQL Server bcp. Comprender todo lo anterior puede ser útil cuando se realiza una exportación masiva de datos del SQL Server para importarlos en bloque en otro programa, como por ejemplo uno de base de datos. Los formatos de datos predeterminados (nativo, carácter o Unicode) de la tabla de origen podrían ser incompatibles con la disposición de los datos esperada por el otro programa. Si existe una incompatibilidad, al exportar los datos, debe describirse su disposición.

Nota

Si no está familiarizado con los formatos de datos para importarlos o exportarlos, consulte: Formatos de datos para importación o exportación masivas (SQL Server).

Atributo de formato de datos bcp

El comando bcp 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 un elemento smallint como int). Los tipos de datos definidos por el usuario se exportan como sus tipos base correspondientes. Para obtener más información, consulte:Especificación del tipo de almacenamiento de archivo mediante bcp (SQL Server).

  • Longitud del prefijo

    Para proporcionar el almacenamiento en archivo más compacto para 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, consulte: Especificación de la longitud de prefijo en archivos de datos con bcp (SQL Server).

  • 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 (SQL Server).

  • 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 (usando 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 (SQL Server).

Información general acerca de 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), el comando hará saltar un mensaje en cada uno de los atributos precedentes en cada columna de la tabla de origen o de destino. En cada mensaje, el comando bcp proporciona un valor predeterminado basado en el tipo de datos del SQL Server de la columna de la tabla. Si acepta el valor predeterminado de todos los mensajes, se obtiene el mismo resultado que si especifica un formato nativo ( -n) en la línea de comandos. Cada mensaje 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 en el mensaje.

Ejemplo

El siguiente ejemplo usa el comando bcp para exportar masivamente datos masivos desde la tabla HumanResources.myTeam interactivamente al archivo myTeam.txt . Antes de que pueda ejecutar el ejemplo, debe crear esta tabla. Para obtener más información sobre la tabla y cómo crearla, consulte: Tabla de ejemplo HumanResources.myTeam (SQL Server).

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

bcp AdventureWorks.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 de campo por campo en un archivo de formato no XML

Después de especificar todas las columnas de una tabla, el comando bcp le solicita que genere, si quiere, un archivo de formato no XML para almacenar la información campo a campo recientemente suministrada (vea el ejemplo precedente). 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 (SQL Server).

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 use 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 usando 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 (SQL Server).

Ninguno.

Pasos siguientes