Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
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.
El mensaje bcp para la longitud del prefijo
Si un comando bcp interactivo contiene la opción in o out sin el modificador de archivo de formato (-f) o un modificador de formato de datos (-n, -c, -wo -N), el comando solicita la longitud de prefijo de cada campo, de la manera siguiente:
Enter prefix length of field <field_name> [<default>]:
Si especifica 0, bcp solicita la longitud del campo (en el caso de un tipo de datos de caracteres) o un terminador de campo (en el caso de un tipo de datos no de caracteres nativo).
Nota:
Después de que se especifiquen de forma interactiva todos los campos de un comando bcp, el comando solicita que guarde sus respuestas para cada campo en un archivo que no tenga el formato XML. Para obtener más información sobre los archivos de formato no XML, vea Archivos de formato no XML (SQL Server).
Información general sobre la longitud del prefijo
Para almacenar la longitud de prefijo de un campo, necesita una cantidad de bytes suficiente para representar la longitud máxima del campo. El número de bytes necesario también depende del tipo de almacenamiento de archivo, la nulabilidad de una columna y de si los datos se están almacenando en el archivo de datos en el formato nativo correspondiente o en el formato de caracteres. Por ejemplo, un tipo de datos text o image necesita cuatro caracteres de prefijo para almacenar la longitud del campo, pero el tipo de datos varchar necesita dos caracteres. En el archivo de datos, estos caracteres con prefijo de longitud se almacenan en el formato binario interno de datos de SQL Server.
Importante
Cuando utilice el formato nativo, use prefijos de longitud en lugar de terminadores de campo. El formato de datos nativo puede entrar en conflicto con los terminadores porque los archivos de datos en formato nativo se almacenan como formato binario interno de SQL Server.
Longitudes de prefijo para la exportación masiva
Nota:
El valor predeterminado que se proporciona en la solicitud de longitud de prefijo cuando exporta un campo indica la longitud de prefijo más eficaz para el campo.
Los valores NULL se representan como un campo vacío. Para indicar que el campo está vacío (representa NULL), el prefijo de campo contiene el valor -1; es decir, requiere al menos 1 byte. Si una columna de tabla de SQL Server permite valores NULL, la columna requiere una longitud de prefijo de 1 o superior, en función del tipo de almacenamiento de archivos.
Cuando exporte datos de manera masiva y los almacene en tipos de datos nativos o en formato de caracteres, utilice las longitudes de prefijo de la tabla siguiente:
| SQL Server tipo de datos |
Formato nativoNOT NULL |
Formato nativoNULL |
Formato de caracteresNOT NULL |
Formato de caracteresNULL |
|---|---|---|---|---|
| char | 2 | 2 | 2 | 2 |
| varchar | 2 | 2 | 2 | 2 |
| nchar | 2 | 2 | 2 | 2 |
| nvarchar | 2 | 2 | 2 | 2 |
| Mensaje de texto* | 4 | 4 | 4 | 4 |
| ntext* | 4 | 4 | 4 | 4 |
| binary | 2 | 2 | 2 | 2 |
| varbinary | 2 | 2 | 2 | 2 |
| imagen* | 4 | 4 | 4 | 4 |
| datetime | 0 | 1 | 0 | 1 |
| smalldatetime | 0 | 1 | 0 | 1 |
| decimal | 1 | 1 | 1 | 1 |
| numeric | 1 | 1 | 1 | 1 |
| float | 0 | 1 | 0 | 1 |
| real | 0 | 1 | 0 | 1 |
| int | 0 | 1 | 0 | 1 |
| bigint | 0 | 1 | 0 | 1 |
| smallint | 0 | 1 | 0 | 1 |
| tinyint | 0 | 1 | 0 | 1 |
| money | 0 | 1 | 0 | 1 |
| smallmoney | 0 | 1 | 0 | 1 |
| bit | 0 | 1 | 0 | 1 |
| uniqueidentifier | 1 | 1 | 0 | 1 |
| timestamp | 1 | 1 | 1 | 1 |
| varchar(max) | 8 | 8 | 8 | 8 |
| varbinary(máx) | 8 | 8 | 8 | 8 |
| UDT (un tipo de datos definido por el usuario) | 8 | 8 | 8 | 8 |
| XML | 8 | 8 | 8 | 8 |
| sql_variant | 8 | 8 | 8 | 8 |
| vector | 2 | 2 | N/A | N/A |
- Los tipos de datos ntext, texte image se quitarán en una versión futura de SQL Server. Evite su uso en nuevos trabajos de desarrollo y piense en modificar las aplicaciones que los usan actualmente. Use nvarchar(max), varchar(max)y varbinary(max) en su lugar.
Tamaños de prefijo para la importación masiva
Cuando los datos se importan de manera masiva, la longitud de prefijo es el valor que se especificó cuando se creó originalmente el archivo de datos. Si un comando bcp no creó el archivo de datos, es probable que los caracteres de prefijo de longitud no existan. En tal caso, especifique 0 como longitud de prefijo.
Nota:
Para especificar una longitud de prefijo de un archivo de datos que no se haya creado con bcp, use las longitudes indicadas en Longitudes de prefijo para la exportación masivaanteriormente en este tema.