Especificar el tipo de almacenamiento en archivo mediante bcp

El tipo de almacenamiento en archivo describe cómo se almacena la información 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.

Nota

Para obtener información acerca de la conversión de datos, vea Conversiones de tipos de datos (motor de base de datos).

Comando bcp para el tipo de almacenamiento en archivo

Si un comando bcp interactivo contiene la opción in u out sin el modificador de archivo de formato (-f) o sin un modificador de formato de datos (-n, -c, -w o -N), el comando solicita el tipo de almacenamiento en archivo de cada campo de datos, de la forma siguiente:

Enter the file storage type of field <field_name> [<default>]:

Su respuesta a este mensaje depende de la tarea que realice:

  • Para exportar datos de forma masiva desde una instancia de Microsoft SQL Server a un archivo de datos con el almacenamiento más compacto posible (formato de datos nativo), acepte los tipos de almacenamiento en archivo predeterminados que proporciona bcp. Para obtener una lista de los tipos de almacenamiento en archivo nativos, vea "Tipos de almacenamiento en archivo nativos", más adelante en este mismo tema.

  • Para exportar datos de forma masiva desde una instancia de SQL Server a un archivo de datos en formato de caracteres, especifique char como el tipo de almacenamiento en archivo para todas las columnas de la tabla.

  • Para importar datos de forma masiva a una instancia de SQL Server desde un archivo de datos, especifique el tipo de almacenamiento en archivo como char para los tipos almacenados en formato de caracteres y, para los datos almacenados en formato de tipo de datos nativo, especifique uno de los siguientes tipos de almacenamiento en archivo, según corresponda:

    Tipo de almacenamiento en archivo

    Escriba en el símbolo del sistema

    char1

    c[har]

    varchar

    c[har]

    nchar

    w

    nvarchar

    w

    text2

    T[ext]

    ntext2

    W

    binary

    x

    varbinary

    x

    image2

    I[mage]

    datetime

    d[ate]

    smalldatetime

    D

    time

    te

    date

    de

    datetime2

    d2

    datetimeoffset

    do

    decimal

    n

    numeric

    n

    float

    f[loat]

    real

    r

    Int

    i[nt]

    bigint

    B[igint]

    smallint

    s[mallint]

    tinyint

    t[inyint]

    money

    m[oney]

    smallmoney

    M

    bit

    b[it]

    uniqueidentifier

    u

    sql_variant

    V[ariant]

    timestamp

    x

    UDT(un tipo de datos definido por el usuario)

    U

    XML

    X

    1 La interacción de longitud de campo, longitud de prefijo y terminadores determina la cantidad de espacio de almacenamiento que se asigna en un archivo de datos a datos que no son de caracteres exportados como el tipo de almacenamiento en archivo char. Para obtener más información, vea Almacenamiento de datos en formato de caracteres.

    2 Los tipos de datos ntext, text e image se quitarán en una versión futura de SQL Server. En proyectos de desarrollo nuevos evite el uso de estos tipos de datos y planee la modificación de las aplicaciones que los utilicen 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.

Tipos de almacenamiento en archivo nativos

Cada tipo de almacenamiento en archivo nativo se registra en el archivo de formato como el tipo de datos de archivo host correspondiente.

Tipo de almacenamiento en archivo

Tipo de datos del archivo host

char1

SQLCHAR

varchar

SQLCHAR

nchar

SQLNCHAR

nvarchar

SQLNCHAR

text2

SQLCHAR

ntext2

SQLNCHAR

binary

SQLBINARY

varbinary

SQLBINARY

image2

SQLBINARY

datetime

SQLDATETIME

smalldatetime

SQLDATETIM4

decimal

SQLDECIMAL

numeric

SQLNUMERIC

float

SQLFLT8

real

SQLFLT4

int

SQLINT

bigint

SQLBIGINT

smallint

SQLSMALLINT

tinyint

SQLTINYINT

money

SQLMONEY

smallmoney

SQLMONEY4

bit

SQLBIT

uniqueidentifier

SQLUNIQUEID

sql_variant

SQLVARIANT

timestamp

SQLBINARY

UDT (un tipo de datos definido por el usuario)

SQLUDT

1 Los archivos de datos que se almacenan en formato de caracteres utilizan char como tipo de almacenamiento en archivo. Por consiguiente, para archivos de datos de caracteres, SQLCHAR es el único tipo de datos que aparece en un archivo de formato.

2 No puede importar datos de forma masiva en columnas text, ntext e image que tengan valores DEFAULT.

Consideraciones adicionales para los tipos de almacenamiento en archivo

Cuando exporta datos de forma masiva desde una instancia de SQL Server a un archivo de datos:

  • Siempre puede especificar char como tipo de almacenamiento en archivo.

  • Si indica un tipo de almacenamiento en archivo que representa una conversión implícita no válida, se produce un error en bcp; por ejemplo, aunque puede especificar int para datos smallint, si especifica smallint para datos int, se producirán errores de desbordamiento.

  • Si se almacenan tipos de datos que no son de caracteres (por ejemplo, float, money, datetime o int) como los tipos de bases de datos correspondientes, los datos se escribirán con el formato nativo de SQL Server en el archivo de datos.

    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 distinto de XML. Para obtener más información acerca de los archivos con formato distinto de XML, vea Descripción de los archivos de formato no XML.