sql >> Base de Datos >  >> RDS >> Sqlserver

Importación de CSV en SQL Server 2008

Podría usar un archivo de formato no xml para especificar un delimitador diferente por columna. Para los valores entre comillas dobles y delimitados por tabulaciones, el delimitador podría ser \",\" . Tendría que agregar una columna inicial no utilizada para capturar la primera cotización. Por ejemplo, para leer este archivo:

"row1col1","row1col2","row1col3"
"row2col1","row2col2","row2col3"
"row3col1","row3col2","row3col3"

Podrías usar este archivo de formato:

10.0
4
1  SQLCHAR 0 50 "\""     0 unused ""
2  SQLCHAR 0 50 "\",\""  1 col1   ""
3  SQLCHAR 0 50 "\",\""  2 col2   ""
4  SQLCHAR 0 50 "\"\r\n" 3 col3   ""

(El número en la primera línea depende de la versión de SQL Server. El número en la segunda línea es el número de columnas para leer. No olvide ajustarlo .)

El bulk insert el comando acepta un formatfile = 'format_file_path' parámetro donde puede especificar el archivo de formato. Por ejemplo:

BULK INSERT YourTable
FROM 'c:\test\test.csv'
WITH (FORMATFILE = 'c:\test\test.cfmt')

Esto resulta en:

select * from YourTable
-->
col1        col2        col3
row1col1    row1col2    row1col3
row2col1    row2col2    row2col3
row3col1    row3col2    row3col3