我最近交了一个非常旧的访问数据库转换为SQL服务器。这是由其他人在90年代完成的,但我有.mdb文件
数据库已经很老了,但是客户的实际配方数据很容易保留。它的结构如下所示。
表格
公式
Formula_000
Formula_001
Formula_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](我可以删除这个以使其更容易),并将它们复制到一个新的主表中,带有公式编号的额外列,用于标识它来自哪个表。以下示例..
表格[Formula_Ingredients]
material code | % | formulaID |
material 1234 | 025 | 000
material 5678 | 075 | 000
material 1111 | 025 | 001
material 2222 | 075 | 001
------------------------------------------------
任何想法的家伙?
答案 0 :(得分: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中对此进行了说明,但您希望将其修改为复制而不是导入。