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
Instancia administrada de Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Warehouse en Microsoft Fabric
Se recomienda utilizar el formato de caracteres al exportar datos de forma masiva a un archivo de texto que se va a utilizar en otro programa o al importar datos de forma masiva desde un archivo de texto generado por otro programa.
El formato de caracteres utiliza el formato de datos de caracteres para todas las columnas. El almacenamiento de información en el formato de caracteres resulta útil si se utilizan los datos en otro programa, como hojas de cálculo, o bien cuando es necesario copiar los datos a una instancia de SQL Server desde una base de datos de otro proveedor, como Oracle.
Nota:
Para transferir datos masivamente entre instancias de Microsoft SQL Server cuando el archivo de datos contiene caracteres Unicode pero no contiene caracteres extendidos o DBCS, utilice el formato de caracteres Unicode. Para obtener más información, vea Usar el formato de caracteres unicode para importar o exportar datos (SQL Server).
Consideraciones para usar el formato de caracteres
Al usar el formato de caracteres, tenga en cuenta lo siguiente:
De forma predeterminada, la utilidad bcp separa los campos de datos de caracteres con el carácter de tabulación y finaliza los registros con el carácter de nueva línea. Para obtener más información sobre cómo especificar otros terminadores, vea Especificar terminadores de campo y de fila (SQL Server).
De forma predeterminada, antes de la exportación o importación masiva de los datos en modo de caracteres, se realizan las conversiones siguientes:
Dirección de la operación masiva Conversión Exportación Convierte los datos en representaciones de caracteres. Si se solicita de forma explícita, los datos se convierten a la página de códigos solicitada para las columnas de caracteres. Si no se especifica ninguna página de códigos, los datos de caracteres se convierten mediante la página de códigos OEM del equipo cliente. Importar Convierte los datos de caracteres en una representación nativa, cuando es necesario, y traduce los datos de caracteres de la página de códigos del cliente a la página de códigos de una o varias columnas de destino. Para evitar la pérdida de caracteres extendidos durante la conversión, utilice el formato de caracteres Unicode o especifique una página de códigos.
Todos los datos sql_variant almacenados en un archivo de formato de caracteres se almacenan sin metadatos. Cada valor de dato se convierte al formato char , según las reglas de conversión implícita de datos. Cuando los datos se importan en la columna sql_variant , se importan como char. Cuando los datos se importan en una columna con un tipo de datos diferente de sql_variant, se convierten desde char mediante la conversión implícita. Para obtener más información sobre la conversión de datos, vea Conversión de tipos de datos (motor de base de datos).
La utilidad bcp exporta valores money como archivos de datos con formato de caracteres con cuatro cifras tras el separador decimal y sin símbolos de agrupación de cifras, tales como separadores de millares. Por ejemplo, una columna money que contiene el valor
1,234,567.123456
se exporta masivamente a un archivo de datos como la cadena de caracteres1234567.1235
.
Opciones de comandos para el formato de caracteres
Puede importar datos de formato de caracteres en una tabla mediante bcp, BULK INSERT (Transact-SQL), o OPENROWSET (Transact-SQL). Para un comando de bcp o comando BULK INSERT (Transact-SQL), puede especificar el formato de datos en la declaración. Para una instrucción OPENROWSET (Transact-SQL), debe especificar el formato de datos en un archivo de formato.
El formato de caracteres se puede usar con las siguientes opciones de comando:
Comando | Opción | Descripción |
---|---|---|
bcp |
-c |
Hace que la utilidad bcp use datos de caracteres.* |
BULK INSERT |
DATAFILETYPE ='char' |
Utiliza el formato de caracteres al importar datos masivamente. |
OPENROWSET |
N/D | Debe usar un archivo de formato |
* Para cargar datos de caracteres (-c
) en un formato compatible con versiones anteriores de clientes de SQL Server, use el interruptor -V
. Para obtener más información, vea Importar datos de formato nativo y de caracteres de versiones anteriores de SQL Server.
Nota:
Otra posibilidad es especificar el formato por campo en un archivo de formato. Para obtener más información, vea Formato de archivos para importar o exportar datos (SQL Server).
Condiciones de prueba de ejemplo
Los ejemplos de este artículo se basan en la tabla y el archivo de formato siguientes.
Tabla de ejemplo
El script siguiente crea una base de datos de prueba, una tabla denominada myChar
y rellena la tabla con algunos valores iniciales. Ejecute el siguiente Transact-SQL en Microsoft SQL Server Management Studio (SSMS):
CREATE DATABASE TestDatabase;
GO
USE TestDatabase;
CREATE TABLE dbo.myChar (
PersonID smallint NOT NULL,
FirstName varchar(25) NOT NULL,
LastName varchar(30) NOT NULL,
BirthDate date,
AnnualSalary money
);
-- Populate table
INSERT TestDatabase.dbo.myChar
VALUES
(1, 'Anthony', 'Grosse', '1980-02-23', 65000.00),
(2, 'Alica', 'Fatnowna', '1963-11-14', 45000.00),
(3, 'Stella', 'Rossenhain', '1992-03-02', 120000.00);
-- Review Data
SELECT * FROM TestDatabase.dbo.myChar;
Archivo de formato no XML de ejemplo
SQL Server admite dos tipos de archivos de formato: XML y no XML. El formato no XML es el formato original compatible con versiones anteriores de SQL Server. Para obtener más información, vea archivos de formato no XML (SQL Server). El comando siguiente usa el utilidad bcp para generar un archivo de formato no xml, myChar.fmt
, basado en el esquema de myChar
. Para usar un comando bcp para crear un archivo de formato, especifique el argumento FORMAT
y use nul
en lugar de una ruta de acceso de archivo de datos. La opción Format también requiere la opción -f
. Además, en este ejemplo, el calificador c
se usa para especificar datos de caracteres y se usa T
para especificar una conexión de confianza mediante la seguridad integrada.
En el símbolo del sistema, escriba el siguiente comando:
bcp TestDatabase.dbo.myChar format nul -f D:\BCP\myChar.fmt -T -c
REM Review file
Notepad D:\BCP\myChar.fmt
Importante
Asegúrese de que el archivo de formato no XML termina con un retorno de carro o avance de línea. De lo contrario, es probable que reciba el mensaje de error siguiente:
SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC Driver 13 for SQL Server]I/O error while reading BCP format file
Ejemplos
En los ejemplos siguientes se usan la base de datos y los archivos de formato creados anteriormente en este artículo.
Usar bcp y formato de caracteres para exportar datos
-c
interruptor y OUT
comando.
El archivo de datos creado en este ejemplo se usará en todos los ejemplos posteriores.
En el símbolo del sistema, escriba el siguiente comando:
bcp TestDatabase.dbo.myChar OUT D:\BCP\myChar.bcp -T -c
REM Review results
NOTEPAD D:\BCP\myChar.bcp
Usar bcp y formato de caracteres para importar datos sin un archivo de formato
El interruptor -c
y el comando IN
. En el símbolo del sistema, escriba el siguiente comando:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"
REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -T -c
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"
Usar bcp y formato de caracteres para importar datos con un archivo de formato no XML
Los interruptores -c
y -f
y el comando IN
. En el símbolo del sistema, escriba el siguiente comando:
REM Truncate table (for testing)
SQLCMD -Q "TRUNCATE TABLE TestDatabase.dbo.myChar;"
REM Import data
bcp TestDatabase.dbo.myChar IN D:\BCP\myChar.bcp -f D:\BCP\myChar.fmt -T
REM Review results
SQLCMD -Q "SELECT * FROM TestDatabase.dbo.myChar;"
Usar BULK INSERT y el formato de caracteres sin un archivo de formato
Argumento DATAFILETYPE
. Ejecute el siguiente Transact-SQL en Microsoft SQL Server Management Studio (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar
FROM 'D:\BCP\myChar.bcp'
WITH (
DATAFILETYPE = 'Char'
);
-- review results
SELECT * FROM TestDatabase.dbo.myChar;
Usar BULK INSERT y formato de caracteres con un archivo de formato no XML
Este es un ejemplo del argumento FORMATFILE
. Ejecute el siguiente Transact-SQL en Microsoft SQL Server Management Studio (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
BULK INSERT TestDatabase.dbo.myChar
FROM 'D:\BCP\myChar.bcp'
WITH (
FORMATFILE = 'D:\BCP\myChar.fmt'
);
-- review results
SELECT * FROM TestDatabase.dbo.myChar;
Usar OPENROWSET y el formato de caracteres con un archivo de formato no XML
Ejemplo del argumento FORMATFILE
. Ejecute el siguiente Transact-SQL en Microsoft SQL Server Management Studio (SSMS):
TRUNCATE TABLE TestDatabase.dbo.myChar; -- for testing
INSERT INTO TestDatabase.dbo.myChar
SELECT *
FROM OPENROWSET (
BULK 'D:\BCP\myChar.bcp',
FORMATFILE = 'D:\BCP\myChar.fmt'
) AS t1;
-- review results
SELECT * FROM TestDatabase.dbo.myChar;
Tareas relacionadas
Para usar formatos de datos para la importación masiva o exportación masiva:
Importar datos con formato nativo y de caracteres de versiones anteriores de SQL Server
Uso del formato nativo para importar o exportar datos (SQL Server)
Uso del formato de caracteres Unicode para importar o exportar datos (SQL Server)
Usar el formato nativo Unicode para importar o exportar datos (SQL Server)