【问题标题】:Import of .CSV then export to Access 2007 DB via SSIS causes huge bloat导入 .CSV 然后通过 SSIS 导出到 Access 2007 DB 会导致巨大的膨胀
【发布时间】:2010-11-10 16:54:35
【问题描述】:

我有一个 90MB 的 .csv 提取,我需要将其推送到 Access 2007 数据库中。

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

我需要做什么 - .csv 提取包含我需要在将它们推送到 Access 数据库之前处理的几列。为了实现这一点,我使用 SSIS(来自 SQL Server 2008 安装)并使用几个派生列来包含处理后的列,然后通过ADO.NET 连接使用以下连接字符串“Data Source=C:\Import\InTheGarden.accdb;Provider=Microsoft.ACE.OLEDB.12.0;”。 (来自 SSIS 中连接管理器中的连接的连接字符串)

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

两件事:-

  • 首先,我不明白导致膨胀的原因以及如何解决它。我已经阅读了我不知道今天有多少关于“Access 2007 Bloat”的文章,并且似乎找不到任何可以解释到底发生了什么的文章:(
  • 其次,虽然我可以导入上面的 .csv 文件,但我还有另一个 154MB 的文本文件需要导入,并且鉴于较小的文件导致数据库在导入时膨胀到 1.16GB,我对成功的希望并不大这个更大的文件不超过 2GB 的限制!

我通常会使用 SQL Server 作为后端,但有一些我无法控制的原因导致不能发生这种情况:(

很高兴提供更多信息,Access 不是我使用负载的东西,所以我可能错过了一些关键信息!! :(

谢谢!

【问题讨论】:

标签: ssis ms-access-2007


【解决方案1】:

为什么不在 Access 中使用临时表进行导入、处理数据,然后插入到真实表中?您将为此使用单独的临时数据库,以避免两次导入的臃肿。我已经对 Access 进行了数十次导入,当我需要在最终追加之前处理数据时,我一直都是这样做的。

【讨论】:

  • 嗨,David thx 的回复,今天早上已经开始沿着这条路走,但在同一个数据库中使用表(即没有 SSIS,只有 Access 导入)只是为了让我继续。现在已将该“暂存”表移动到单独的数据库中并链接到原始数据库。对我应该如何管理该暂存数据库的确切机制感兴趣,将不胜感激任何见解?谢谢!
  • 这是一个临时数据库。它是一次性的。假设您重复执行此操作,您应该有一个空模板数据库并将其复制以用于导入。否则,没关系。
【解决方案2】:

尝试将 CSV 分成几个较小的文件,并在导入每个文件后运行 Access 的 Compact Database 命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多