Você pode usar um arquivo de formato não-xml para especificar um delimitador diferente por coluna. Para valores entre aspas duplas e delimitados por tabulações, o delimitador pode ser
\",\"
. Você teria que adicionar uma coluna inicial não utilizada para capturar a primeira cotação. Por exemplo, para ler este arquivo:"row1col1","row1col2","row1col3"
"row2col1","row2col2","row2col3"
"row3col1","row3col2","row3col3"
Você pode usar este arquivo 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 ""
(O número na primeira linha depende da versão do SQL Server. O número na segunda linha é o número de colunas a serem lidas. Não se esqueça de ajustá-lo .)
A
bulk insert
comando aceita um formatfile = 'format_file_path'
parâmetro onde você pode especificar o arquivo de formato. Por exemplo:BULK INSERT YourTable
FROM 'c:\test\test.csv'
WITH (FORMATFILE = 'c:\test\test.cfmt')
Isto resulta em:
select * from YourTable
-->
col1 col2 col3
row1col1 row1col2 row1col3
row2col1 row2col2 row2col3
row3col1 row3col2 row3col3