导入.CSV然后通过SSIS导出到Access 2007 DB会导致巨大的膨胀

时间:2010-11-10 16:54:36

标签: ssis ms-access-2007

我有一个90MB的.csv提取,我需要进入Access 2007数据库。

作为测试 - 如果我将具有默认设置的文件直接导入到新表中,我最终得到的是134MB的数据库。

我需要做什么 - .csv提取包含一些我需要处理的列,然后再将它们推送到Access DB中。为了实现这一点,我使用SSIS(来自SQL Server 2008安装)并使用几个派生列来包含已处理的列,然后将所有列都推送到现有的Access表(在流程开始时没有行) ADO.NET连接使用以下连接字符串“Data Source = C:\ Import \ InTheGarden.accdb; Provider = Microsoft.ACE.OLEDB.12.0;”。 (SSIS中Connection Manager中连接的连接字符串)

当我使用SSIS处理数据时,我最终获得了1.16GB的文件,当压缩时,文件大小约为180MB!

两件事: -

  • 首先,我不明白是什么导致了膨胀,以及我如何能够解决这个问题。我读过我今天在“Access 2007 Bloat”上发现了多少文章,似乎无法找到任何可以解释的内容:(
  • 其次,虽然我可以导入上面的.csv文件,但我有另一个154MB的文本文件需要导入,并且考虑到较小的文件导致数据库在导入时膨胀到1.16GB我没有太大的成功希望这个更大的文件不超过2GB限制!

我通常会使用SQL Server作为后端,但我无法控制为什么不会发生这种情况的原因:(

很高兴提供更多信息,访问不是我使用的负载,所以可能有我错过的关键信息! :(

THX!

2 个答案:

答案 0 :(得分:1)

为什么不在Access中使用临时表来执行导入,处理数据,然后插入真实表?您将使用单独的临时数据库,以避免导入两次膨胀。我已经在Access中完成了几十次导入,当我需要在最终追加之前处理数据时,这一直是我这样做的。

答案 1 :(得分:0)

尝试将CS​​V分解为几个较小的文件,然后在导入每个文件后运行Access'Compact Database命令。