将不同的表从一个数据库导入到另一个数据库
Import different tables from one db to another db
我是数据库新手。我在一台服务器上有一个论坛。我想从此论坛中提取所有数据,然后导入到不同服务器上的不同论坛(具有不同的 table 名称和结构)。
我的想法可能很有趣,是:
1) 使用 phpMyAdmin 从旧服务器导出论坛数据库 table 记录。
2)将导出的数据库导入临时数据库。
3) 更改 table 和列名称以及结构以匹配目标论坛数据库结构。
4) Re-export 来自临时数据库的 table 记录。
5) 将导出的数据附加到目标数据库以将数据添加到新论坛(在 phpMyAdmin 中)。
我知道这可能不合适。
这项工作有高效的流程吗?有没有我可以参考的参考资料? (我目前正在 importing/exporting 数据库中搜索信息,但我还找不到有用的资源...)
已添加:
旧论坛的布局与 bbPress 相似。最终目的是将旧论坛的数据导入bbPress。旧论坛有post标题,post内容,post日期,post作者,回复,回复内容,回复作者..等等。我想将它们映射到 bbPress 中的相应字段。
感谢您的帮助。
虽然 SQL 在某种程度上是标准化的,但数据库和数据库操作并非如此,因此我们需要知道您正在使用的具体数据库。也就是说,大多数 RDBMS 数据库都有 CLI 工具来相当有效地导出一个或多个 tables 以及用于导入的 CLI 工具。然后就是将输出可能的不兼容性转换为输入所需的内容。
一般来说,流程是这样的:
- 将 table 数据导出到 SQL 语句
- 如有必要,修改 SQL 语句以允许导入
- 将修改后的 SQL 语句导入新数据库
- 运行 table 新数据库上的转换 (DDL) 脚本
- 将转换后的 table 中的数据附加到现有 table
对于大多数 RDBMS,您还可以选择其他导出和导入格式,例如 CSV。如果您提供这两个数据库的详细信息,您将获得更具体的帮助。
例如,对于两个 MySQL 数据库,您可以执行以下操作:
mysqldump -u username -p databaseName tableName > tableName.sql
同样,要将此数据导入 MySQL 数据库:
mysql -u username -p -D databaseName < tableName.sql
如果数据库兼容,则不需要转换(第 2 步)。要修改新导入的table,你可以这样做:
mysql -u username -p -D databaseName < tableNameDDL.sql
tableNameDDL.sql:
ALTER TABLE tableName ADD myNewColumn VARCHAR(60);
要将 tableName
中的数据附加到现有的 table,您可以执行以下操作:
mysql -u username -p -D databaseName < tableNameAppend.sql
tableNameAppend.sql
INSERT INTO existingTableName (c1, c2, c3 )
SELECT c1, c2, c3 FROM tableName;
您也可以在旧数据库中进行转换,当然,在导出之前将数据的初始副本复制到您的临时 table 中。
我是数据库新手。我在一台服务器上有一个论坛。我想从此论坛中提取所有数据,然后导入到不同服务器上的不同论坛(具有不同的 table 名称和结构)。
我的想法可能很有趣,是:
1) 使用 phpMyAdmin 从旧服务器导出论坛数据库 table 记录。 2)将导出的数据库导入临时数据库。 3) 更改 table 和列名称以及结构以匹配目标论坛数据库结构。 4) Re-export 来自临时数据库的 table 记录。 5) 将导出的数据附加到目标数据库以将数据添加到新论坛(在 phpMyAdmin 中)。
我知道这可能不合适。
这项工作有高效的流程吗?有没有我可以参考的参考资料? (我目前正在 importing/exporting 数据库中搜索信息,但我还找不到有用的资源...)
已添加: 旧论坛的布局与 bbPress 相似。最终目的是将旧论坛的数据导入bbPress。旧论坛有post标题,post内容,post日期,post作者,回复,回复内容,回复作者..等等。我想将它们映射到 bbPress 中的相应字段。
感谢您的帮助。
虽然 SQL 在某种程度上是标准化的,但数据库和数据库操作并非如此,因此我们需要知道您正在使用的具体数据库。也就是说,大多数 RDBMS 数据库都有 CLI 工具来相当有效地导出一个或多个 tables 以及用于导入的 CLI 工具。然后就是将输出可能的不兼容性转换为输入所需的内容。
一般来说,流程是这样的:
- 将 table 数据导出到 SQL 语句
- 如有必要,修改 SQL 语句以允许导入
- 将修改后的 SQL 语句导入新数据库
- 运行 table 新数据库上的转换 (DDL) 脚本
- 将转换后的 table 中的数据附加到现有 table
对于大多数 RDBMS,您还可以选择其他导出和导入格式,例如 CSV。如果您提供这两个数据库的详细信息,您将获得更具体的帮助。
例如,对于两个 MySQL 数据库,您可以执行以下操作:
mysqldump -u username -p databaseName tableName > tableName.sql
同样,要将此数据导入 MySQL 数据库:
mysql -u username -p -D databaseName < tableName.sql
如果数据库兼容,则不需要转换(第 2 步)。要修改新导入的table,你可以这样做:
mysql -u username -p -D databaseName < tableNameDDL.sql
tableNameDDL.sql:
ALTER TABLE tableName ADD myNewColumn VARCHAR(60);
要将 tableName
中的数据附加到现有的 table,您可以执行以下操作:
mysql -u username -p -D databaseName < tableNameAppend.sql
tableNameAppend.sql
INSERT INTO existingTableName (c1, c2, c3 )
SELECT c1, c2, c3 FROM tableName;
您也可以在旧数据库中进行转换,当然,在导出之前将数据的初始副本复制到您的临时 table 中。