SQL Server批量导入ROWTERMINATOR vbCrLf(\ n)无法正常工作

时间:2013-11-21 01:41:35

标签: sql sql-server

我知道这里有关于此问题的其他线程,并且没有一个推荐的修复工作正常。我已经验证每条记录末尾的CRLF是十六进制'0D0A'。我可以在vbCrLf上替换VBS并替换它们中的每一个。

以下是制表符分隔文本文件的示例:

01/16/2013  11:00   HS01    DocLast, DocFirst PA-C  Occurred    ML  11/20/2012  15:31       
01/07/2013  09:40   HS01    DocLast, DocFirst PA-C  Canceled    ML  11/20/2012  15:36   Patient Canceled    20130103-57935

我正在SQL Server 2008中的存储过程中对文本文件执行此代码:

set @sqlcmd = '
BULK INSERT #temp_import_records
FROM ''' + @import_file + '''
WITH
(
ROWTERMINATOR = ''\n''
)'

我正在尝试将此文本插入到包含20列的临时表中。该数据仅有10个字段。使用我的代码,这两个记录都被安装到临时表中的同一记录中。我已经尝试将rowterminator设置为'0D0A'和'0x0A',但它们都没有工作。

我做错了什么?

3 个答案:

答案 0 :(得分:1)

\n字符只是两个字符LF(0D0A)行终止符的CR+LF(0A)部分。使用\r作为第一部分:

 ROWTERMINATOR = ''\r\n''

答案 1 :(得分:0)

我建议也像这样逃避终止:

ROWTERMINATOR = ''\\n''

答案 2 :(得分:0)

对于现在登陆此处的任何人,您都可以尝试使用十六进制代码

ROWTERMINATOR = '0x0d0a'ROWTERMINATOR = '0x0a'