【问题标题】:Importing multiple access tables into one SQL server table将多个访问表导入到一个 SQL Server 表中
【发布时间】:2017-09-28 14:34:16
【问题描述】:

我最近收到了一个非常旧的访问数据库来转换为 SQL 服务器。这是其他人在 90 年代完成的,但我有 .mdb 文件

数据库很旧,但有客户喜欢保留的实际配方数据。它在单独的表中结构如下..

表格

公式

公式_000

公式_001

公式_002

正如您在上面看到的,有一个标题公式表,其中包含名称、日期、版本等详细信息。

表格[公式]

------------------------------------------------

| FORMULA NAME | ID | VERSION | CREATED |

| Formula_000 |  000   |     1     |  01/01/1997

| Formula_001 |  001   |     1     |  01/01/1997

------------------------------------------------

有一个单独的附表,其中包含配方表中每个条目的成分,因此有一个名为 [Formula_001] 的表,其中包含以下列..

表格 [Formula_000] (x 100)

material code | % | 

material 1234 | 025 |    

material 5678 | 075 |  

------------------------------------------------

我不希望所有这些表都通过标题表链接,但我需要将数据放入一个新结构中。有数百个名为 Formula_xxx 的表

我想要做的是遍历上述数据库中的所有 MS 访问表,除了头表 [公式](我可以删除这个以使其更容易),并将它们复制到一个新的主表中,并带有带有公式编号的额外列,以标识它来自哪个表。下面的例子..

表格 [Formula_Ingredients]

material code | % | formulaID | 

material 1234 | 025 |    000

material 5678 | 075 |    000

material 1111 | 025 |    001

material 2222 | 075 |    001

------------------------------------------------

有什么想法吗?

【问题讨论】:

  • 如果您创建了如上所示的表格,那么您应该能够编写一些 VBA 代码来遍历所有“Formula_xxx”表格并将行附加到您的新表格中。这能满足您的需求吗?
  • 那样做是个好主意,我也可以循环标题表以获取公式表名称,然后单独打开它们并复制到一个新的手动创建的表中,包括表名称为身份证。谢谢
  • 如果您使用 VBA 构建 SQL 来“插入”(从“Formula_xxx”中选择记录)并且目标是您的新表,则不需要打开每个表。

标签: sql sql-server ms-access


【解决方案1】:

这让人想起我们最近执行的一项任务,即将 11,000 个 Access 数据库导入 Postgres。您在一个 Access 文件中有多个表,而不是在多个 Access 文件中有相同的表名,但同样的方法也适用。

我们使用了一个通用的 SQL 脚本处理器(免责声明:我写的)。这是一个 Python 程序;您可以从https://pypi.org/project/execsql/ 或运行pip install execsql 获得它。该技术是将所有公式表的名称放入目标数据库中的一个表中,然后使用 execsql 的COPY 元命令遍历该表,将数据从 Access 数据库复制到 SQL Server。这在文档 (http://execsql.readthedocs.io/en/latest/examples.html#example-13-import-all-the-csv-files-in-a-directory) 的示例 13 中进行了说明,但您可能希望将其修改为复制而不是导入。

【讨论】:

  • 谢谢我看看
猜你喜欢
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-16
  • 1970-01-01
相关资源
最近更新 更多