Exportar datos de una tabla de SQL Server
Para exportar e importar datos desde SQL Server disponemos del comando bpc, que se
ejecuta a través de la aplicación de línea de comandos. El comando bpc es muy sencillo de
utilizar, al menos para realizar cosas sencillas. Se trata de uno de los métodos más eficientes
para exportar o importar datos en SQL Server.
La implementación básica de este comando es esta:
bcp {tabla o consulta} {in/out} nombre_del_fichero [opciones]
En el ejemplo utilizaremos los comandos –c y –T
Esto es lo que significa cada uno de ellos:
-c Realiza la operación con un tipo de datos de caracteres. Esta opción no realiza una petición
para cada campo; utiliza un tipo char como tipo de almacenamiento.
-T Especifica que la utilidad bcp se va a conectar a SQL Server a través de una conexión de
confianza que utilizará seguridad integrada. No es necesario usar el login_id ni password. Si no
se especifica –T, será necesario especificar –U y –P para iniciar la sesión correctamente.
La sintaxis completa del comando bcp se puede consultar aquí.
[Link]
Las opciones se pueden complicar bastante, pues permite construir y utilizar ficheros de
formato, pero para la mayor parte de los casos será suficiente con poder utilizar las opciones
más básicas que nos permitan utilizar un fichero para exportar/importar los datos de una tabla:
Exportación de los datos de la tabla 'tabla' de la BD 'basededatos' en el fichero
'[Link]'
> bcp [Link] out c:\directorio\[Link]
-c -T
Importación de los datos del fichero '[Link]' en la tabla 'otratabla' de la BD
'otrabasededatos':
> bcp [Link] in c:\directorio\
[Link] -c –T
Desde el servidor de SQL Server ejecuto el comando y me sale una
pantalla como esta:
Ahora ya puedo ver el documento en el directorio donde le he indicado.
Para importar ídem pero en vez de out poner in.
En mi caso particular el servidor de la base de datos es remoto, por tanto al ejecutar el
comando me da un fallo en la conexión al servidor. (Si alguien conoce como conectarme en
remoto con el comando bcp que me deje un comentario)
Por tanto esta solución no me sirve.
La única herramienta que puede generar un archivo de formato es la utilidad bcp.
Probar a generar un Excel directamente copiando el resultado desde remoto y luego copiarlo
con bcp o INSERT SELECT
Importación masiva desde un archivo de datos remoto
Para usar BULK INSERT o INSERT...SELECT * FROM OPENROWSET(BULK...) para la importación
masiva de datos desde otro equipo, el archivo de datos debe estar compartido entre los dos
equipos. Para especificar un archivo de datos compartido, use la convención de nomenclatura
universal (UNC) para el nombre, que tiene la forma general de \\Servername\Sharename\Path\
Filename. Además, la cuenta usada para obtener acceso al archivo de datos debe tener los
permisos necesarios para leer el archivo en el disco remoto.
Por ejemplo, la siguiente instrucción BULK INSERT realiza la importación masiva de datos en
una tabla SalesOrderDetail de la base de datosAdventureWorks desde un archivo de
datos denominado [Link]. Este archivo de datos reside en una carpeta compartida
llamada \dailyorders en un directorio compartido de red llamado salesforce de un
sistema llamado computer2.
BULK INSERT [Link]
FROM '\\computer2\salesforce\dailyorders\[Link]';
GO