将平面文件导入 SQL 服务器重复 Headers 破坏完整性约束

Import Flat File into SQL Server Repeated Headers Break Integrity Constraints

我在使用 SQL 服务器导入/导出向导将平面文件导入 MS SQL 服务器时遇到了几个问题。我想知道如何有效地将文件加载到 SQL 服务器 table。

文件条件:

  1. 平面文件相当大(800MB,几百万行)
  2. 格式不正确
    1. 第一列为空
    2. header 是一个 3 行集:顶部空白,中间有字段名称,底部空白
    3. 这 3 行 header 大约每 60,000 行重复一次
    4. 一些值为空值
    5. 它是制表符分隔的

首先,我尝试将其作为平面文件加载,但 SQL 服务器无法识别制表符分隔符。 Excel 正确打开它(虽然部分打开),但 SQL 服务器将其全部粘贴在 1 列中。

其次,我尝试将其打开并另存为 excel 文件并将其作为 excel 文件加载到 SQL 服务器导入向导中(我不确定是否它无论如何都会重新保存所有数据)。现在 SQL 服务器正确地解析了列,但它表示当它遇到重复的 header 时完整性约束被破坏(每个数字类型字段每 60000 行都有一个字符串 header)。

如果有人能告诉我如何解决这个问题,那就太好了。理想情况下,我希望在没有完整性约束的情况下上传它,并使用 DELETE WHERE header 或空白子句删除额外的 header。不是我将采取的唯一解决方案,而是一个想法。

此外,这是我的第一个 Whosebug post,因此请耐心等待。

谢谢,

由于我还没有正式的答复,所以我会 post 我最终做了什么。

基本上,我只是将所有内容都设为 varchar,这样它就可以加载到 table 中。然后我写了几个查询来清理里面的垃圾。后来我创建了新的类型字段,并用 varchar 类型字段的插入和转换填充它们。

我不知道这是否会对某人有所帮助,但至少这里有一个答案。