Especificar longitud de prefijo en archivos de datos
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.
Petición bcp de longitud de prefijo
Si un comando bcp interactivo contiene la opción in o out pero no contiene el modificador de archivo de formato (-f) o un modificador de formato de datos (-n, -c, -w o -N), el comando solicita la longitud de prefijo de cada campo de datos de la siguiente manera:
Enter prefix length of field <field_name> [<default>]:
Si especifica 0, bcp le 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). Para ver un ejemplo que muestre esta solicitud en contexto, vea Especificar formatos de datos por razones de compatibilidad mediante bcp.
Nota
Después de especificar de forma interactiva todos los campos de un comando bcp, el comando solicita sus respuestas para cada campo en un archivo con formato no XML. Para obtener más información acerca de los archivos con formato no XML, vea Descripción de los archivos de formato no XML.
Información general sobre la longitud de 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 de prefijo de longitud se almacenan en el formato de datos binario interno 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 en el formato de datos binario interno de SQL Server se almacena un archivo de datos en formato nativo. |
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, lo que indica que requiere al menos 1 byte. Recuerde que si la columna de una tabla de SQL Server permite valores NULL, la columna requiere una longitud de prefijo de 1 ó más, en función del tipo de almacenamiento de archivo.
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 nativo NOT NULL |
Formato nativo NULL |
Formato de caracteres NOT NULL |
Formato de caracteres NULL |
---|---|---|---|---|
char |
2 |
2 |
2 |
2 |
varchar |
2 |
2 |
2 |
2 |
nchar |
2 |
2 |
2 |
2 |
nvarchar |
2 |
2 |
2 |
2 |
text1 |
4 |
4 |
4 |
4 |
ntext1 |
4 |
4 |
4 |
4 |
binary |
2 |
2 |
2 |
2 |
varbinary |
2 |
2 |
2 |
2 |
image1 |
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(max) |
8 |
8 |
8 |
8 |
UDT (un tipo de datos definido por el usuario) |
8 |
8 |
8 |
8 |
XML |
8 |
8 |
8 |
8 |
1 Los tipos de datos ntext, text e 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. En su lugar, utilice nvarchar(max), varchar(max) y varbinary(max). Para obtener más información, vea Usar tipos de datos de valores grandes.
Para obtener más información, vea Almacenamiento de datos en formato de caracteres.
Longitudes 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 el archivo de datos no se creó con un comando bcp, probablemente no existan los caracteres del prefijo de longitud. En tal caso, especifique 0 como longitud de prefijo.
Nota
Para especificar una longitud de prefijo de un archivo de datos que no haya sido creado mediante bcp, utilice las longitudes que se encuentran en "Longitudes de prefijo para la exportación masiva" anteriormente en este tema.