【问题标题】:BULK INSERT ISSUE picking up funny character on first lineBULK INSERT ISSUE 在第一行拾取有趣的字符
【发布时间】:2015-10-26 21:23:17
【问题描述】:

参考这篇文章Bulk Insert Includes Line Terminator 现在有一个解决方案,因为我正在尝试同样的问题并遇到同样的问题。我按照建议将我的文件在记事本中保存为 Unicode,没有任何区别。这是第一个数据值:´╗┐Abe

代码:

BULK
INSERT BulkWordInsert
FROM '<sometextfile>.txt'
WITH
(
    FIELDTERMINATOR = ':',
    ROWTERMINATOR = '\n'
)

【问题讨论】:

  • 添加代码页有帮助吗? WITH (CODEPAGE = 'RAW')
  • 是的,我已经尝试过这种变体并且 DATAFILETYPE='char' 不起作用,并且 DATAFILETYPE='widechar' 并且还使用 CODEPAGE='65001'。所有的变化都没有区别。我看到的唯一方法是在批量插入之后我必须通过编写删除这个有趣文本的 SQL 来修复它
  • 这些字符是 UTF-8 的字节标记,SQL Server 不支持。您应该将输入文件转换为 UTF-16。见:stackoverflow.com/questions/15137558/…

标签: tsql bulkinsert


【解决方案1】:

我建议使用 UltraEdit 之类的超级文本编辑器打开文件(在 ultraedit.com 下载免费试用版),然后按 Ctrl-H 进入十六进制模式,并注意是否使用 BULK INSERT 加载该字符因为该字符实际上在文件中。猜测其他文本编辑器可以做到这一点,但 UltraEdit 是我最熟悉的。

如果是这样,那么您将不得不联系文件的来源并要求他们将其删除,或者加载它然后将 T-SQL 写入 REPLACE(the_string, the_goofy_character, '')。

我在以前的客户端中遇到过这个问题,其中 UNIX 大型机踢出包含奇数字符的文本文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-28
    • 2013-07-25
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 2012-12-09
    相关资源
    最近更新 更多