我不敢相信这在某处没有得到解答,但我搜索了 MSDN、Stack Exchange 和 Google。我开始怀疑我想这样做是不可能的。
有没有人知道使用 SQL-server 在查询中执行此操作的方法(不使用其他工具,我已经看到使用 SSIS 的答案)?
假设我有一个 CSV 文件,其中包含由 SOH (StartOfHeader, char(1)) 和 \n als 行终止符终止的字段。我以为我可以使用 BULK INSERT 导入它,例如:
BULK INSERT Fubar
[dbo].[Persovorlage_DE]FROM 'c:\temp\foo.bar'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = char(1),
ROWTERMINATOR = '\n',
TABLOCK,
CODEPAGE = '1252'
)
这样做可以,除了不接受 char(1) 。
有没有办法将 FIELDTERMINATOR 设置为 char(1)?
后记1:
JeroenMostert 在评论中建议使用 select char(1),并将其复制粘贴在 FIELDTERMINATOR 的单引号之间,这是不可见但有效的。
后记2:
HoneyBadger 建议使用 0x01,这似乎也有效:
BULK INSERT Fubar FROM 'c:\temp\Foo.bar'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = '0x01',
ROWTERMINATOR = '\n',
TABLOCK,
CODEPAGE = '1252'
)
把它放在一个答案中,我会接受它