C# 将SQLBulkCopy的大型数据集编辑到SQL Server数据库中
我有一个非常大(5000多万条记录)的数据集,我正在从旧的Interbase数据库导入新的SQL Server数据库 我目前的做法是:C# 将SQLBulkCopy的大型数据集编辑到SQL Server数据库中,c#,sql,sql-server,csv,C#,Sql,Sql Server,Csv,我有一个非常大(5000多万条记录)的数据集,我正在从旧的Interbase数据库导入新的SQL Server数据库 我目前的做法是: 从Interbase数据库获取csv文件(完成后,使用我在网上找到的名为“FBExport”的程序) 旧数据库的模式与新数据库不匹配(不在我的控制之下),因此现在我需要批量编辑某些字段,以便它们在新数据库中工作。这是我需要帮助的地方 编辑到正确的模式后,我使用SqlBulkCopy将新编辑的数据集复制到SQL Server数据库中 第3部分工作得非常快,诊断显示
SqlBulkCopy
将新编辑的数据集复制到SQL Server数据库中SqlBulkCopy
我的问题是:什么是“最佳”方法(性能方面)对于这个数据编辑步骤?我想很可能有一种linq类型的方法来实现这一点,它会表现得更好吗?如果可以的话,我该怎么做呢?如果步骤3的导入非常快,我会尝试创建一个临时数据库,其模式与旧数据库完全匹配,并将记录导入其中d在临时表中添加额外的列,在临时表中需要拆分XXX和XXX。然后可以使用SQL将源列拆分为两个单独的列。同样,可以使用SQL执行任何基于ID的查找和更新,以确保记录关系继续正确
一旦数据被转换成可接受的格式,您就可以使用IDENTITY_insert ON将记录插入到最终表中,不包括所有遗留列/信息
在我看来,在临时SQL DB中执行此操作的主要优点是,您可以随时编写查询,以确保使用旧键的记录关系仍然与使用新数据库自动生成键的记录正确相关
当然,这是基于我在SQL中比在C#中更容易进行数据转换/验证。如果第3步的导入非常快,我会尝试创建一个模式与旧数据库完全匹配的临时数据库,并将记录导入其中。然后我会考虑在临时数据库中添加其他列y表,其中需要将XXX拆分为XXX和XXX。然后可以使用SQL将源列拆分为两个单独的列。同样,可以使用SQL执行任何基于ID的查找和更新,以确保记录关系继续正确
一旦数据被转换成可接受的格式,您就可以使用IDENTITY_insert ON将记录插入到最终表中,不包括所有遗留列/信息
在我看来,在临时SQL DB中执行此操作的主要优点是,您可以随时编写查询,以确保使用旧键的记录关系仍然与使用新数据库自动生成键的记录正确相关
当然,这是基于我在SQL中比在C#中更容易进行数据转换/验证。这有点宽泛,因为它肯定会引起对正确技术的猜测,并且不会显示任何代码或错误。但是,我认为您走的是正确的道路。另一个选择是使用相同的方法创建临时数据库结构为csv并批量复制文件,然后通过sql进行操作。这也有其缺点,但取决于您的模式。这有点广泛,因为它肯定会引起对正确技术的猜测,并且不会显示任何代码或错误。但是,我认为您走的是正确的道路。另一种选择可能是创建一个与csv结构相同的临时数据库,并大容量复制文件,然后通过sql进行操作。这也有其缺点,尽管这取决于您的模式。