viernes, agosto 19, 2011

Exportar Datos CSV MSSQL

Para un proyecto en el cual estoy trabajando con @tierrarara, debemos hacer importacion y exportacion de datos tanto con MSSQL como con PGSQL, en mi entrada anterior de Importar datos en PGSQL les coloque como se puede llenar las tablas de un archivo, de numerosas formas bien utiles, solo que tambien debemos generar ese archivo de CSV desde otro lado diferente a PostgreSQL, esta vez les mostrare una forma "directa" de generar un archivo CSV de una tabla en MSSQL.

Primero que nada deben revisar que se puedan ejecutar XP_CMDSHELL, si no saben pues solo deben correr el siguiente query:

sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO


sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO

luego con la siguiente instruccion pueden crear dicho archivo:


USE master
GO
EXEC xp_cmdshell
'bcp "SELECT *  FROM [MIBASEDEDATOS].dbo.[MITABLA]" queryout "C:\Temp\TEST.txt" -c -b 10000 -t , -T -S NOMBREPC\INSTANCIAMSSQL'

Vale destacar que C:\Temp\TEST.txt debe ser una direccion fisica valida, incluyendo el archivo de lo contrario les puede dar un error que diria algo asi:

SQLState = S1000, NativeError = 0
Error = [Microsoft][ODBC SQL Server Driver]Unable to open BCP host data-file
NULL

Happy Coding



jueves, agosto 18, 2011

Importar datos en PGSQL


Copiar a una tabla tal cual este el archivo
COPY tablename
TO '/usr/local/pgsql/data/csv/alldata_export.csv'
Copiar a una tabla con definicion de campos
COPY tablename(column1, column2, column3, column4)
TO '/usr/local/pgsql/data/csv/definedcolumns_export.csv'
Copiar a una tabla con definicion de campos e identificando el delimitador
COPY tablename(column1, column2, column3, column4)
TO '/usr/local/pgsql/data/csv/defineddelimiter_export.csv'
WITH DELIMITER ‘,’
Copiar a una tabla con definición de campos e identificando el delimitador ademas de informarle al sistema que la primera columna es el encabezado.
COPY tablename(column1, column2, column3, column4)
TO '/usr/local/pgsql/data/csv/header_export.csv'
WITH DELIMITER ‘,’
CSV HEADER
Copiar a una tabla definiendo el query del archivo
COPY (SELECT column1, column2, column3, column4
FROM tablename
WHERE column1 = ‘value’)
TO '/usr/local/pgsql/data/csv/selectwhere_export.csv'
WITH DELIMITER ','
CSV HEADER