将平面文件导入 SQL 服务器重复 Headers 破坏完整性约束
Import Flat File into SQL Server Repeated Headers Break Integrity Constraints
我在使用 SQL 服务器导入/导出向导将平面文件导入 MS SQL 服务器时遇到了几个问题。我想知道如何有效地将文件加载到 SQL 服务器 table。
文件条件:
- 平面文件相当大(800MB,几百万行)
- 格式不正确
- 第一列为空
- header 是一个 3 行集:顶部空白,中间有字段名称,底部空白
- 这 3 行 header 大约每 60,000 行重复一次
- 一些值为空值
- 它是制表符分隔的
首先,我尝试将其作为平面文件加载,但 SQL 服务器无法识别制表符分隔符。 Excel 正确打开它(虽然部分打开),但 SQL 服务器将其全部粘贴在 1 列中。
其次,我尝试将其打开并另存为 excel 文件并将其作为 excel 文件加载到 SQL 服务器导入向导中(我不确定是否它无论如何都会重新保存所有数据)。现在 SQL 服务器正确地解析了列,但它表示当它遇到重复的 header 时完整性约束被破坏(每个数字类型字段每 60000 行都有一个字符串 header)。
如果有人能告诉我如何解决这个问题,那就太好了。理想情况下,我希望在没有完整性约束的情况下上传它,并使用 DELETE WHERE header 或空白子句删除额外的 header。不是我将采取的唯一解决方案,而是一个想法。
此外,这是我的第一个 Whosebug post,因此请耐心等待。
谢谢,
由于我还没有正式的答复,所以我会 post 我最终做了什么。
基本上,我只是将所有内容都设为 varchar,这样它就可以加载到 table 中。然后我写了几个查询来清理里面的垃圾。后来我创建了新的类型字段,并用 varchar 类型字段的插入和转换填充它们。
我不知道这是否会对某人有所帮助,但至少这里有一个答案。
我在使用 SQL 服务器导入/导出向导将平面文件导入 MS SQL 服务器时遇到了几个问题。我想知道如何有效地将文件加载到 SQL 服务器 table。
文件条件:
- 平面文件相当大(800MB,几百万行)
- 格式不正确
- 第一列为空
- header 是一个 3 行集:顶部空白,中间有字段名称,底部空白
- 这 3 行 header 大约每 60,000 行重复一次
- 一些值为空值
- 它是制表符分隔的
首先,我尝试将其作为平面文件加载,但 SQL 服务器无法识别制表符分隔符。 Excel 正确打开它(虽然部分打开),但 SQL 服务器将其全部粘贴在 1 列中。
其次,我尝试将其打开并另存为 excel 文件并将其作为 excel 文件加载到 SQL 服务器导入向导中(我不确定是否它无论如何都会重新保存所有数据)。现在 SQL 服务器正确地解析了列,但它表示当它遇到重复的 header 时完整性约束被破坏(每个数字类型字段每 60000 行都有一个字符串 header)。
如果有人能告诉我如何解决这个问题,那就太好了。理想情况下,我希望在没有完整性约束的情况下上传它,并使用 DELETE WHERE header 或空白子句删除额外的 header。不是我将采取的唯一解决方案,而是一个想法。
此外,这是我的第一个 Whosebug post,因此请耐心等待。
谢谢,
由于我还没有正式的答复,所以我会 post 我最终做了什么。
基本上,我只是将所有内容都设为 varchar,这样它就可以加载到 table 中。然后我写了几个查询来清理里面的垃圾。后来我创建了新的类型字段,并用 varchar 类型字段的插入和转换填充它们。
我不知道这是否会对某人有所帮助,但至少这里有一个答案。