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.

Nota importanteImportante

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.