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