我使用BULK INSERT来处理我的文本文件。一切都很顺利,但我发现了一个问题,如果我在最后一行的最后一列给出一个值,那么它会被导入。但是,如果最后一行的最后一列的值为空白,它会丢弃该行,尽管目标列允许空值!文本文件使用制表符分隔符,下面是最后一行数据的示例:
Mike Johnson 1/29/1987 M
如果在最后一列字段中有任何值,将插入行,例如:
Mike Johnson 1/29/1987 M test
这是我的批量插入操作:
BULK INSERT ##TEMP_TEXT
FROM '#uncdir#\#cffile.ServerFile#'
WITH (
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n'
)
我尝试使用
\r
而不是 \n
,但这并没有解决问题。我也在一些网站上进行了研究,但没有找到任何解决方案。我想知道是否可以在 SQL 中修复此问题。如果有人知道如何解决,请告诉我。解决方案: 对于任何使用 ColdFusion 的人,下面是添加文本文件中换行符的行:
exec xp_cmdshell 'echo. >> "#uncdir#\#cffile.ServerFile#"';
关键在于将 coldfusion 变量用双引号括起来,否则代码无法正常工作。
uncdir 代码如下:
<cfset uncdir = createObject("java","java.net.InetAddress").getLocalHost().getHostName()/>
cffile.ServerFile
是可以从表单获取的。我使用了JQuery来提交文本文件。希望这能帮到你。谢谢。
\r\n
吗? - TT.NULL
值,最后一个分隔符也需要存在。 - TT.