小编son*_*hoc的帖子

将 csv 文件加载到 SQL Server 2016 的最有效方法是什么?

好的,所以这个问题看起来很简单。好吧,它不仅仅是加载文件。

整个故事是这样的:出于某种原因,我们的客户向我们发送了只能被描述为关系数据库的内容,被压缩,压缩成单个 csv 文件(但分隔符是波浪号而不是逗号)。实际上,这有点可怕;相同的数据在整个文件中无限重复。因此,为了使这些数据恢复秩序,我将其加载到实际的关系数据库中。由于数据量很大,将其加载到数据库中可以更轻松地检查数据是否存在问题。它还使导出变得更加容易。

每条记录有 53 行,每次传输大约有 250,000 条记录。我想把它分成 6 个标准化表。我不确定是否要验证 C# 程序或我正在使用的 SQL Server 2016 LocalDb 实例中的数据。

我不是经验丰富的 DBA;我是一名 C# 程序员,对 SQL 有所涉猎。我对语法感到很舒服,但我想确保我这样做是正确的。

此外,一切都必须完全自动化。文件进来,C# 程序在收到文件时启动,并将其加载到数据库中。

让我解释一下布局。该文件有 53 个字段,每行包含一个报表明细行(他们的收费内容、项目收费的频率、该项目的总成本或贷项等)。问题是每一行都包含整个邮寄、付款人、居民、财产和汇款的信息。知道了这一点,让我解释一下我现在是如何做的:

  1. 打开文件
  2. 对于文件的每一行,检索描述邮寄、付款人、居民、财产和汇款目的地的表的键。
  3. 将该数据与缓存的数据进行比较。如果缓存的数据无效,请查询数据库以查看是否已添加该实体。如果没有,请创建它。缓存那个。
  4. 添加新的详细信息行并将其与邮件相关联,邮件与详细信息是一对多的关系。(邮寄本身与付款人、财产和汇款是多对一的关系。)
  5. 完成后关闭文件。

这不是世界上最慢的事情,但它完全是在 RAM 中完成的。由于程序在当前状态下非常接近 RAM 耗尽,我们决定将数据加载到数据库中,而不是将其全部保存在本地 RAM 中。希望这可以为潜在的回答者提供更多信息。谢谢!

sql-server c# csv sql-server-2016

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

csv ×1

sql-server ×1

sql-server-2016 ×1