Transferencia de datos
Importación y exportación de datos
1. Presentación
La importación de los datos consiste en recuperar los datos desde una fuente externa a SQL Server (archivo ASCII, base de datos de Access...) y almacenar estos datos en una o varias tablas de una base SQL Server. La exportación representa la operación inversa: el contenido de una tabla o el resultado de una consulta se proyecta en un archivo ASCII, o directamente en una base de datos de Access, por ejemplo.
La importación es, en general, una operación puntual que interviene entre la creación y el diseño de una base de datos y la puesta en servicio de la base. En esta etapa de importación, todos los datos que provienen de un sistema de gestión de datos antiguo se integran en SQL Server. Una vez que termina la migración, es posible trabajar con los datos presentes en SQL Server.
Sin embargo, algunas veces la importación puede ser una operación que se realice regularmente. Esto sucede sobre todo cuando la base SQL sirve para editar análisis sobre los datos almacenados en sistemas diferentes.
Las operaciones de exportación son por lo general menos frecuentes. Naturalmente, si los datos tienen que ser manipulados desde herramientas como Microsoft Access o Excel, es preferible trabajar directamente sobre los datos almacenados en SQL Server en lugar de realizar una exportación para trabajar con una copia local de los datos. La exportación sigue siendo la solución ideal cuando un usuario desea establecer cálculos sobre los datos trabajando en modo desconectado (en el ordenador portátil, por ejemplo).
SQL Server proporciona varias herramientas de importación y exportación para poder realizar estas operaciones entre fuentes ODBC, OLE DB, hojas de cálculo de Excel y archivos de texto ASCII.
Si los datos almacenados por SQL Server deben ser distribuidos a otros servidores SQL de la empresa, es preferible establecer la replicación de datos, que ofrece más flexibilidad y se encarga de sincronizar las bases de datos replicadas.
La replicación se abordará en el capítulo Replicación.
Presentación de la transferencia de datos
2. Las herramientas
La transferencia de información de una base de datos hacia otra es una operación corriente que debe realizarse de manera rápida y segura. Para...
La herramienta BCP
BCP (Bulk Copy Program) es una potente herramienta de línea de comandos. Es muy conocida entre los usuarios de las versiones anteriores de SQL Server. Se utiliza cuando el volumen de las transferencias entre archivos de texto y la base SQL Server es elevado.
BCP permite exportar los datos de una tabla o de una consulta SQL hacia un archivo de texto o bien importar un archivo de texto en una tabla. Cuando se utilice, es necesario precisar la fuente y el destino de los datos, así como un nombre de usuario y una contraseña para conectarse al servidor.
La utilización de BCP no necesita un dominio especial de Transact SQL, salvo en caso de que la exportación se base en una consulta SQL. Por el contrario, la descripción del archivo de datos es un requisito obligatorio.
1. La sintaxis
Al principio puede parecer algo pesada, pero es posible fijar muchas opciones, lo que añade mucha flexibilidad cuando se usa bcp.
bcp {nombre_completo_objeto|"consulta"}
{in|out|queryout|format} archivo_de_datos
[-m máximo_de_errores] [-f archivo_de_formato] [-x]
[-e archivo_de_errores] [-d nombreBaseDatos]
[-F primera_línea] [-L última_línea]
[-b tamaño_del_lote_de_instrucciones]
[-n] [-c] [-w] [-N] [-V {80|90|100}] [-q] [-n]
[-C página_de_código]
[-t fin_de_campo] [-rfin_de_línea]
[-i archivo_de_entrada] [-o archivo_de_salida]
[-a tamaño_del_paquete] [-k ReadOnly]
[-S nombre_del_servidor] [-U id_conexión]
[-P contraseña] [-q]
[-T] [-v] [-R] [-k] [-E] [-h "opción [,...n]"]
nombre_completo_objeto|"consulta"
Se trata de dar el nombre completo del objeto (tabla o vista) o una consulta cuyo resultado se exportará a un archivo.
En una exportación es posible tomar como objeto una tabla, una vista o solicitar la ejecución de una consulta. Los usuarios deben tener los derechos de selección apropiados.
En caso de una importación de datos, no se puede realizar a través de una consulta. Algunas veces es posible realizar las inserciones a través de una vista. Para ello se deben tomar algunas precauciones en el momento de la definición de la vista última. Durante la importación es necesario que el usuario sea miembro del rol db_owner.
{in|out|queryout|format} archivo_de_datos
Las opciones indicadas son una operación de exportación (out) o importación (in) de datos. Si se especifica una consulta en lugar de un nombre de objeto, hay que utilizar queryout. Por último, format permite crear un archivo de formato siguiendo las opciones especificadas; se podrá usar la opción f.
Las otras opciones permiten ajustar el tipo del archivo (texto...), los delimitadores de campos y de líneas...
-S, -U, -P y -T
Estas cuatro opciones se encuentran en numerosas herramientas de línea de comandos tales como isql. Permiten conectarse a un servidor SQL y abrir una conexión. El nombre del servidor lo indica la opción -S. Además, es posible abrir una sesión utilizando una autenticación de Windows (-T) o una autenticación de SQL Server. Es necesario proporcionar el nombre de la conexión (-U) y la contraseña (-P).
2. El uso de bcp en modo interactivo
Si cuando se ejecuta el comando bcp no se especifica alguna de las siguientes opciones (-n, -c, -w o N), entonces la herramienta pregunta de manera interactiva al usuario.
En el ejemplo anterior, los datos contenidos en la tabla articulos de la base GESCOM se exportan al archivo articulos.txt. Gracias a la opción -c, los datos se exportan en modo carácter. La base se almacena en el servidor IvanMDW81 y se utiliza una autenticación Windows (opción -T) para conectarse al servidor.
En el siguiente ejemplo, el resultado de una consulta se exporta a un archivo de datos.
Utilización de bcp en modo interactivo
Durante la importación de datos con las herramientas de copia por bloques (bcp y bulk copy), se deshabilitan los triggers de tipo instead of e insert. Es posible solicitar su ejecución eliminando la opción FIRE TRIGGERS. En este caso hay que asegurarse de que los triggers son capaces de tratar un conjunto de registros, ya que solo se habilitan una vez por bloque.
Para facilitar la descripción de los datos, es posible utilizar un archivo de formato. Si no existe durante la primera importación, bcp pregunta con el objetivo de generar el archivo de formato bcp....
SSIS
1. Presentación
Cada vez es más importante consolidar en un punto central los datos repartidos en diferentes lugares y después mostrarlos en un formato u otro. El principal problema para este tipo de operación de centralización de datos es el formato de los datos. Además, cuando la información está repartida en diferentes sistemas y servidores, hay muy pocos cambios que se hagan en el mismo formato. Con SQL Server Integration Services, es posible importar, exportar y transformar los datos entre varias fuentes heterogéneas.
SSIS también se puede utilizar para exportar los datos desde la base de datos hacia una herramienta de análisis. Por ejemplo, los datos integrados con SSIS se pueden consolidar a nivel de la base de datos y después se puede llamar de nuevo a SSIS para exportarlos a un archivo de Excel.
SSIS es una herramienta destinada principalmente al análisis decisional (Business Intelligence). En las bases de datos OLAP existe un uso simplificado de esta herramienta. Este es el comportamiento que se presenta aquí, ya que permite hacer operaciones de importación y exportación de datos entre diferentes formatos.
SSIS es un ETL que permite almacenar una secuencia de operaciones de extracción y transformación de los datos para que se respeten las restricciones que imponga el destino de los datos. Por último, la información...
Adjuntar y separar una base de datos
Es posible mover fácil y rápidamente los archivos de datos y los logs de una base de datos SQL Server entre dos instancias SQL Server. El formato de los archivos de datos es el mismo, tanto si el servicio SQL Server se ejecuta en modo 32 bits como si lo hace en 64 bits.
Para transferir estos archivos, hay que proceder en dos etapas: separar la base de la instancia donde se ejecuta y adjuntar los archivos que forman la base a la nueva instancia. Estas operaciones se desarrollan fácilmente si se respetan algunos criterios que se indican a continuación a nivel de la separación de una base de datos.
Es posible migrar una base de datos de una version a otra de SQL Server. Durante esta migración, la indexación de texto completo se puede reconstruir o importar en función del valor asignado al argumento de nivel server upgrade_option. La importación solo será posible si los archivos son accesibles durante la asignación. En caso de una reconstrucción, es importante no subestimar el tiempo necesario para la reconstrucción de los índices de texto completo.
En todos los casos, después de la migración de la base de datos, el nivel mínimo de compatibilidad es de 100, porque es el nivel mínimo soportado por SQL Server 2014.
El hecho de mover una base de datos de una instancia a otra, va a implicar modificaciones en muchos metadatos...