Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将csv文件与db表合并_Sql Server_Ssis_Sql Server 2008 R2_Dts - Fatal编程技术网

Sql server 将csv文件与db表合并

Sql server 将csv文件与db表合并,sql-server,ssis,sql-server-2008-r2,dts,Sql Server,Ssis,Sql Server 2008 R2,Dts,我必须每天从文件中加载大量数据到数据库表中。数据来自ERP系统,有5000000条记录,并以高达500mb的csv文件传送。 已经有一个集成服务工作负责这项工作以及转换、数据检查和导入到另一个系统中。我忘了说没有单一id列,否则就很容易了。(3至7个id列) ERP系统也不可能只提供自上次执行以来发生变化的数据 问题是如何改进csv文件到数据表的合并。该表必须始终保存上一次执行的全部数据 由于性能不好,我不得不重新进口。已验证以下解决方案: TSQL合并:性能非常差,导入需要的时间太长 自定义

我必须每天从文件中加载大量数据到数据库表中。数据来自ERP系统,有5000000条记录,并以高达500mb的csv文件传送。 已经有一个集成服务工作负责这项工作以及转换、数据检查和导入到另一个系统中。我忘了说没有单一id列,否则就很容易了。(3至7个id列) ERP系统也不可能只提供自上次执行以来发生变化的数据

问题是如何改进csv文件到数据表的合并。该表必须始终保存上一次执行的全部数据

由于性能不好,我不得不重新进口。已验证以下解决方案:

  • TSQL合并:性能非常差,导入需要的时间太长
  • 自定义DTS任务:我需要知道哪些记录是新的、更新的或删除的。仅加载db表和csv会引发OutOfMemoryException
  • 将integration services外部的文件与以前的文件进行比较,并仅导入增量。这是一个很好的解决方案,但实际上我们有很多错误,因为文件与以前的加载不同
现在的问题是,有没有人有这样的经验?有人有解决这个问题的好建议吗

谢谢你的建议


MH

我还没有开始实施,但在我与集成服务专家交谈之后,通过临时表和查找来解决这个问题是最好的解决方案。首先,需要使用TSQL任务创建临时表,然后使用通常的复制任务插入文件的记录。在查找中,您可以决定是插入还是更新


在接下来的两周内,我将着手实施,所以请不要犹豫,向我询问更多细节。

您的意思是,csv文件的文件格式中没有明确的模式。您的意思是您总是得到不同的列。我不确定,但您可以出于几个原因从MemoryException中获得。只需谷歌搜索并检查一下。您在这个过程中使用了多少表?是否可以删除您正在替换的表记录,可能是使用datetime列,然后导入所有数据?@KumarHarsh:问题不是OutOfMemoryException,我之所以会这样,是因为这两个数据集中都有记录。@Tab Alleman:我不能直接删除它们,但考虑一下是个好建议。:)