代码之家  ›  专栏  ›  技术社区  ›  Andrew

通过SSMS将平面文件导入SQL Server失败

  •  12
  • Andrew  · 技术社区  · 6 年前

    使用SSMS导入平面文件选项将看似有效的平面文件(csv、文本等)导入SQL Server数据库时,会出现以下错误:

    Microsoft SQL Server Management Studio

    将数据插入表时出错。(Microsoft.SqlServer.Import.Wizard)

    将数据插入表时出错。(Microsoft.SqlServer.Pross.Import)

    对象引用未设置为对象的实例。(Microsoft.SqlServer.Pross.Import)

    目标表可能包含导入得很好的行。未导入的第一行似乎没有格式错误。

    怎么了?

    5 回复  |  直到 6 年前
        1
  •  18
  •   Andrew    5 年前

    检查以下各项:

    • 文件末尾没有空行(保留最后一行的行终止符不变)- 这似乎是最常见的问题
    • 没有意外的空白列
    • 没有严重转义的引号

    看起来导入过程会将行分块加载。这意味着最后一个成功加载的区块后面的行可能没有错误。您需要查看失败块的后续行,以找到有问题的行。

    这让我在处理大文件时花费了数小时的时间。希望这能节省一些时间。

        2
  •  14
  •   Kevin Nelson    4 年前

    如果要导入的文件已打开,SSMS将抛出此错误。关闭文件,然后重试。

        3
  •  2
  •   Reza Shek    5 年前

    确保在创建平面文件时 如果 在任何列中都有text(varchar)值, 请勿 选择要创建的文件 逗号 “,” 已分隔。相反,请选择垂直线 “|” 或者你是什么 当然 它不可能在那些值中。逗号在nvarchar字段中非常常见。

    我有这个问题,其他答案的建议都没有帮助我! 我希望这可以节省一些时间,我花了几个小时才弄明白!!!

        4
  •  2
  •   Arnav Sharma    3 年前

    其他这些都不适用于我,但这确实起到了作用:

    导入平面文件时,SSMS将为您提供每列中数据类型的简要摘要。每当您看到位于int或double列中的nvarchar时,请将其更改为int或double。并将所有nvarchar更改为nvarchar(max)。这对我有用。

        5
  •  0
  •   Wesley-Sinde    2 年前

    我已经使用csv数据很长时间了。当我第一次开始这项工作时,我遇到了类似的问题,但是作为一个新手,我无法从异常中获得准确的错误。

    在导入任何内容之前,您应该先了解以下几点。

    1. 不得在任何软件(如Excel)中打开csv文件。
    2. csv文件单元格不应包含逗号或引号符号。
    3. 数据末尾没有不必要的空格。
    4. 不使用保留项作为数据。在Excel中,打开 并将其另存为新文件。