将多个访问表导入到一个SQL server表中
我最近收到一个非常旧的access数据库,要转换成SQL server。它是在90年代由其他人完成的,但我有.mdb文件 数据库很旧,但有客户的实际配方数据,我想保留。其结构在单独的表格中,如下所示 桌子 公式 公式000 公式001 公式_002 正如您在上面看到的,有一个标题公式表,其中包含名称、日期、版本等详细信息 表[公式] 有一个单独的附表,其中包含配方表中每个条目的成分,因此有一个名为[Formula_001]的表格,里面有以下列 表[Formula_000]x 100 我不希望所有这些表都通过标题表链接,但我需要将数据转换成新的结构。有数百个这样的表,名为Formula_xxx 我想做的是循环浏览上述数据库中的所有MS access表,但标题表[formulas]除外。我可以删除这一表,使其更简单,并将它们复制到新的主表中,其中有一个带有公式编号的额外列,以确定它来自哪个表。下面的例子 表[配方奶粉成分]将多个访问表导入到一个SQL server表中,sql,sql-server,ms-access,Sql,Sql Server,Ms Access,我最近收到一个非常旧的access数据库,要转换成SQL server。它是在90年代由其他人完成的,但我有.mdb文件 数据库很旧,但有客户的实际配方数据,我想保留。其结构在单独的表格中,如下所示 桌子 公式 公式000 公式001 公式_002 正如您在上面看到的,有一个标题公式表,其中包含名称、日期、版本等详细信息 表[公式] 有一个单独的附表,其中包含配方表中每个条目的成分,因此有一个名为[Formula_001]的表格,里面有以下列 表[Formula_000]x 100 我不希望所有
有什么想法吗,伙计们 这让人想起我们最近执行的一项任务,即将11000个Access数据库导入Postgres。在一个访问文件中有多个表,而不是在多个访问文件中有相同的表名,但同样的方法也适用
我们使用了一个通用的SQL脚本处理器免责声明:这是我写的。这是一个Python程序;您可以从或通过运行pip install execsql来获得它。该技术是将所有公式表的名称放入目标数据库中的一个表中,然后使用execsql的COPY metacommand遍历该表,将数据从Access数据库复制到sqlserver。文档的示例13对此进行了说明,不过您可能希望将其修改为复制而不是导入。如果您如上所示创建表,那么您应该能够编写一些VBA代码来旋转所有“Formula_xxx”表,并将行附加到新表中。这能满足您的需要吗?这样做不是一个坏主意,我可以循环标题表以获得公式表名称,然后分别打开它们,并复制到一个新的手动创建的表中,包括表名作为id。谢谢如果您使用VBA生成SQL“插入”以从“Formula_xxx”中选择记录,并且目标是您的新表,则不需要打开每个表。谢谢,我将签出它
------------------------------------------------
| FORMULA NAME | ID | VERSION | CREATED |
| Formula_000 | 000 | 1 | 01/01/1997
| Formula_001 | 001 | 1 | 01/01/1997
------------------------------------------------
material code | % |
material 1234 | 025 |
material 5678 | 075 |
------------------------------------------------
material code | % | formulaID |
material 1234 | 025 | 000
material 5678 | 075 | 000
material 1111 | 025 | 001
material 2222 | 075 | 001
------------------------------------------------