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.