将不同的表从一个db导入到另一个db

时间:2016-01-09 22:56:26

标签: database phpmyadmin

我是数据库新手。我在一台服务器上有一个论坛。我想从这个论坛中提取所有数据,然后导入到不同服务器上的不同论坛(具有不同的表名和结构)。

我的想法可能很有趣,是:

1)使用phpMyAdmin从旧服务器导出论坛数据库表记录。 2)将导出的数据库导入临时数据库。 3)更改表和列名称和结构以匹配目标论坛数据库结构。 4)从临时数据库重新导出表记录。 5)将导出的数据附加到目标数据库,以将数据添加到新论坛(在phpMyAdmin中)。

我知道这可能不合适。

这项工作有效吗?有什么参考我可以参考吗? (我目前正在搜索有关导入/导出数据库的信息,但我找不到有用的资源......)

: 旧论坛与bbPress有类似的布局。最终目的是将旧论坛的数据导入bbPress。旧论坛有帖子标题,帖子内容,发布日期,发表作者,回复,回复内容,回复作者等等。我想将它们映射到bbPress中的相应字段。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

虽然SQL有些标准化,但数据库和数据库操作并非如此,我们需要知道您正在使用的特定数据库。也就是说,大多数RDBMS数据库都有CLI工具,可以合理有效地导出一个或多个表以及导入的CLI工具。然后是将输出的可能不兼容性转换为输入所需的内容。

一般来说,过程就是:

  1. 将表数据导出到SQL语句
  2. 如有必要,修改SQL语句以允许导入
  3. 将修改后的SQL语句导入新数据库
  4. 在新数据库上运行表转换(DDL)脚本
  5. 将转换表中的数据附加到现有表
  6. 对于大多数RDBMS,您还可以选择其他导出和导入格式,例如CSV。如果您提供两个数据库的详细信息,您将获得更具体的帮助。

    例如,对于两个MySQL数据库,您可以执行以下操作:

        mysqldump -u username -p databaseName tableName > tableName.sql
    

    同样,要将此数据导入MySQL数据库:

        mysql -u username -p -D databaseName < tableName.sql
    

    如果数据库兼容,则不需要转换(步骤2)。要修改新导入的表,您可以执行以下操作:

        mysql -u username -p -D databaseName < tableNameDDL.sql
    

    <强> tableNameDDL.sql

        ALTER TABLE tableName ADD myNewColumn VARCHAR(60);
    

    要将tableName中的数据附加到现有表格,您可以执行以下操作:

        mysql -u username -p -D databaseName < tableNameAppend.sql
    

    <强> tableNameAppend.sql

        INSERT INTO existingTableName (c1, c2, c3 )
            SELECT c1, c2, c3 FROM tableName;
    

    您可以在旧数据库中进行转换,当然也可以在导出之前将数据的初始副本放入临时表中。