Acerca de las operaciones de importación y exportación masivas
Microsoft SQL Server 2005 admite la exportación masiva de datos desde una tabla de SQL Server y la importación masiva de datos en una tabla o vista sin particionar de SQL Server. Los métodos básicos disponibles son:
Método | Descripción | Importa datos | Exporta datos |
---|---|---|---|
Utilidad de línea de comandos (Bcp.exe) que importa y exporta datos masivamente y genera archivos de formato. |
Sí |
Sí |
|
Instrucción Transact-SQL que importa datos directamente de un archivo de datos en una tabla o vista sin particionar de una base de datos. |
Sí |
No |
|
Instrucción Transact-SQL que usa el proveedor de conjunto de filas bulk OPENROWSET para importar masivamente datos en una tabla de SQL Server especificando la función OPENROWSET(BULK…) para seleccionar datos en una instrucción INSERT. |
Sí |
No |
Operación en proceso frente a fuera de proceso
La instrucción BULK INSERT y la función OPENROWSET(BULK) se ejecutan en proceso con SQL Server y comparten el mismo espacio de direcciones de memoria. Puesto que los archivos de datos se abren en un proceso de SQL Server, los datos no se copian entre el proceso del cliente y los procesos de SQL Server. Para obtener información sobre cuestiones relacionadas con la seguridad al importar datos utilizando BULK INSERT o INSERT ... SELECT * FROM OPENROWSET(BULK...), vea Importación masiva de datos mediante BULK INSERT u OPENROWSET(BULK...).
Por el contrario, la utilidad bcp se ejecuta fuera de proceso. Para mover datos entre los espacios de memoria de proceso, bcp debe utilizar el cálculo de referencias de datos entre procesos. El cálculo de referencias de datos entre procesos**consiste en convertir los parámetros de una llamada de método en una secuencia de bytes. Ello puede incrementar significativamente la carga del procesador. Sin embargo, como bcp analiza los datos y los convierte en el formato de almacenamiento nativo en el proceso del cliente, pueden descargar el análisis y la conversión de datos del proceso de SQL Server. En consecuencia, si tiene restricciones de CPU, puede obtener mejor rendimiento en la importación masiva en un equipo que tenga más de una CPU o en diferentes equipos, utilizando bcp en lugar de utilizar BULK INSERT o INSERT ... SELECT * FROM OPENROWSET(BULK).
Archivos de formato
La utilidad bcp, BULK INSERT e INSERT ... SELECT * FROM OPENROWSET(BULK...) admiten el uso de un archivo de formato especializado que almacena información de formato para cada campo de un archivo de datos. El archivo de formato puede contener también información acerca de la tabla de SQL Server correspondiente. El archivo de formato se puede utilizar para proporcionar toda la información de formato necesaria para la exportación e importación masivas de datos en una instancia de SQL Server.
Los archivos de formato proporcionan una forma flexible de interpretar los datos con el formato que tienen en el archivo de datos durante la importación, así como para dar formato a los datos del archivo de datos durante la exportación. Esta flexibilidad elimina la necesidad de escribir código para propósitos especiales con el fin de interpretar los datos o volver a darles formato según los requisitos específicos de SQL Server o la aplicación externa. Por ejemplo, si va a exportar masivamente datos que se van a cargar en una aplicación que requiere valores separados por comas, puede usar un archivo de formato para insertar comas como terminadores de campo en los datos exportados.
SQL Server 2005 admite dos tipos de archivos de formato: archivos de formato XML y archivos de formato no XML. Los archivos de formato no XML se admiten en versiones anteriores de SQL Server; los archivos de formato XML son nuevos en SQL Server 2005.
La única herramienta que puede generar un archivo de formato es la utilidad bcp. Para obtener más información, vea Crear un archivo de formato. Para obtener más información acerca de los archivos de formato, vea Archivos de formato para importar o exportar datos.
[!NOTA] En aquellos casos en que no se suministra un archivo de formato durante una operación de exportación o importación masiva, el usuario puede invalidar el formato predeterminado en la línea de comandos.
El procesador de consultas y la importación masiva
Para importar masivamente datos en una instancia de SQL Server, la utilidad bcp y las instrucciones BULK INSERT y INSERT ... SELECT * FROM OPENROWSET(BULK...) funcionan con el procesador de consultas.
Los tres métodos convierten los datos de un archivo de datos en conjuntos de filas de OLE DB. Pero el método de conversión varía, como se muestra a continuación:
- La utilidad bcp lee el archivo de datos y envía una secuencia TDS a la API del Bulk Copy Program o Programa de copia masiva (BCP) de SQL Server, que convierte los datos en conjuntos de filas de OLE DB.
- BULK INSERT y el proveedor de conjuntos de filas bulk OPENROWSET convierten los datos de un archivo directamente en un conjunto de filas de OLE DB.
El procesador de consultas, que se encarga de planear y optimizar cada operación, inserta los conjuntos de filas de OLE DB en la tabla de destino.
Consideraciones de rendimiento
Las consideraciones de rendimiento pueden ser importantes si va a importar grandes cantidades de datos. En determinados casos, el rendimiento puede mejorar si modifica la forma en que una operación de importación o exportación masiva controla uno o varios de los siguientes elementos:
- Modificadores de lotes
- Comprobación de restricciones CHECK
- Forma de registrar las transacciones masivas. Relevante para bases de datos que normalmente utilizan el modelo de recuperación completa.
- Orden de los datos exportados
- Importación de datos en paralelo
- Bloqueo de tablas
- Ejecución de desencadenadores
Para obtener más información, vea Optimizar el rendimiento de la importación masiva.
[!NOTA] No existen técnicas especiales de optimización para las operaciones de exportación masiva. Estas operaciones simplemente seleccionan los datos de la tabla de origen con una instrucción SELECT.
Vea también
Conceptos
Directrices básicas para la importación masiva de datos
Formatos de datos para importar o exportar datos
Situaciones para la importación masiva y la exportación de datos
Procesar una única instrucción SQL
Otros recursos
Performing Bulk Load of XML Data (SQLXML 4.0)
SQL Server Integration Services
Performing Bulk Copy Operations
bcp (utilidad)
BULK INSERT (Transact-SQL)
Archivos de formato para importar o exportar datos
OPENROWSET (Transact-SQL)