Preparación de los datos para la exportación o importación en bloque
Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)
En esta sección se explican las consideraciones implicadas en el planeamiento de operaciones de exportación masiva y los requisitos para operaciones de importación masiva.
Nota
Si no está seguro de cómo dar formato a un archivo de datos para la importación masiva, use la utilidad bcp para exportar datos de la tabla a un archivo de datos. El formato de cada campo de datos de este archivo muestra el formato requerido para la importación masiva de datos en la columna correspondiente de la tabla. Use el mismo formato de los datos para los campos del archivo de datos.
Consideraciones sobre el formato de archivo de datos para la exportación masiva
Antes de realizar una operación de exportación masiva mediante el comando bcp , tenga en cuenta lo siguiente:
Cuando se exportan los datos a un archivo, el comando bcp crea el archivo de datos automáticamente mediante el nombre del archivo especificado. Si ese nombre de archivo ya se está usando, los datos que se están copiando masivamente en el archivo de datos sobrescriben el contenido existente del archivo.
La exportación masiva desde una tabla o vista a un archivo de datos requiere
SELECT
permiso en la tabla o vista que se está copiando masivamente.SQL Server puede usar exámenes paralelos para recuperar datos. Por lo tanto, las filas de tabla que se exportan masivamente desde una instancia de SQL Server no se garantiza normalmente que estén en cualquier orden específico en el archivo de datos. Para que las filas de tabla exportadas de forma masiva aparezcan en un orden específico en el archivo de datos, use la opción queryout para exportar de forma masiva desde una consulta y especifique una
ORDER BY
cláusula .
Requisitos de formato de archivo de datos para la importación masiva
Para importar datos desde un archivo de datos, el archivo debe cumplir los siguientes requisitos básicos:
- Los datos deben tener un formato de fila y columna.
Nota
La estructura del archivo de datos no necesita ser idéntica a la estructura de la tabla de SQL Server porque las columnas se pueden omitir o reordenar durante el proceso de importación masiva.
El contenido del archivo de datos debe tener un formato admitido, como un formato de caracteres o nativo.
Los datos pueden estar en formato de caracteres o binario nativo, incluido Unicode.
Para importar datos mediante un comando,
BULK INSERT
una instrucción oINSERT ... SELECT * FROM OPENROWSET(BULK...)
una instrucción bcp, la tabla de destino ya debe existir.Cada campo del archivo de datos debe ser compatible con la columna correspondiente de la tabla de destino. Por ejemplo, un campo int no se puede cargar en una columna datetime . Para obtener más información, vea Formatos de datos para importación masiva o exportación masiva (SQL Server) y Especificar formatos de datos de compatibilidad al usar bcp (SQL Server).
Nota
Para especificar un subconjunto de filas que se van a importar desde un archivo de datos en lugar de todo el archivo, puede usar un comando bcp con el modificador o
-L <last_row>
modificador-F <first_row>
. Para obtener más información, consulte bcp Utility.Para importar datos de archivos de datos con campos de longitud fija o ancho fijo, use un archivo de formato. Para obtener más información, vea XML, archivos de formato (SQL Server).
A partir de SQL Server 2017 (14.x), se puede usar un archivo CSV como archivo de datos para una importación masiva de datos en SQL Server. El terminador de campo de un archivo CSV no tiene que ser una coma. Para poderse utilizar como archivo de datos para la importación masiva, un archivo CSV debe observar las restricciones siguientes:
Los campos de datos no contienen nunca el terminador de campo.
Ninguno o todos los valores de un campo de datos se incluyen entre comillas (
""
).Para importar datos de forma masiva desde un archivo de tabla de Microsoft FoxPro o Visual FoxPro (.dbf) o un archivo de hoja de cálculo de Microsoft Excel (.xls), tendría que convertir los datos en un archivo CSV que cumpla con las restricciones anteriores. Normalmente, la extensión de archivo será
.csv
. A continuación, puede usar el.csv
archivo como un archivo de datos en una operación de importación masiva de SQL Server.En sistemas de 32 bits (SQL Server 2014 (12.x) y versiones anteriores, puede importar datos CSV en una tabla de SQL Server sin optimizaciones de importación masiva mediante OPENROWSET con el proveedor OLE DB para Jet. Jet trata los archivos de texto como tablas, con el esquema definido por un
schema.ini
archivo que se encuentra en el mismo directorio que el origen de datos. Para los datos CSV, uno de los parámetros delschema.ini
archivo sería"FORMAT=CSVDelimited"
. Para usar esta solución, tendría que comprender cómo funciona Jet Text IISAM (su sintaxis cadena de conexión,schema.ini
uso, opciones de configuración del Registro, etc.). Los mejores orígenes de esta información son artículos de Ayuda y Knowledge Base (KB) de Microsoft Access. Para obtener más información, vea Inicializar el controlador de origen de datos de texto, Procedimientos para usar una consulta distribuida de SQL Server 7.0 con un servidor vinculado para bases de datos de acceso seguro, PROCEDIMIENTO: Usar el proveedor OLE DB de Jet 4.0 para conectarse a bases de datos ISAM y Procedimientos para abrir archivos de texto delimitados con IIsam de texto del proveedor Jet.
Además, la importación masiva de datos de un archivo de datos en una tabla tiene los siguientes requisitos:
Los usuarios deben tener
INSERT
permisos ySELECT
en la tabla. Los usuarios también necesitanALTER TABLE
permiso cuando usan opciones que requieren operaciones del lenguaje de definición de datos (DDL), como deshabilitar restricciones.Cuando se importan datos de forma masiva mediante
BULK INSERT
oINSERT ... SELECT * FROM OPENROWSET(BULK...)
, el archivo de datos debe ser accesible para las operaciones de lectura mediante el perfil de seguridad del proceso de SQL Server (si el usuario inicia sesión con SQL Server inicio de sesión proporcionado) o mediante el inicio de sesión de Microsoft Windows que se usa bajo seguridad delegada. Además, el usuario debe tenerADMINISTER BULK OPERATIONS
permiso para leer el archivo.
Nota
La importación masiva en una vista con particiones no está permitida y los intentos de importar datos masivamente en una vista con particiones generarán un error.