我有一个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!
两件事: -
我通常会使用SQL Server作为后端,但我无法控制为什么不会发生这种情况的原因:(
很高兴提供更多信息,访问不是我使用的负载,所以可能有我错过的关键信息! :(
THX!
答案 0 :(得分:1)
为什么不在Access中使用临时表来执行导入,处理数据,然后插入真实表?您将使用单独的临时数据库,以避免导入两次膨胀。我已经在Access中完成了几十次导入,当我需要在最终追加之前处理数据时,这一直是我这样做的。
答案 1 :(得分:0)
尝试将CSV分解为几个较小的文件,然后在导入每个文件后运行Access'Compact Database命令。