是否可以将相关数据从一个数据库迁移到另一个数据库但具有不同的列名?我在这里谈论非常大量的数据。有人有想法吗?我已经尝试将其导出为CSV并导入到其他数据库但我收到的错误是:
invalid column count in CSV input in line 1
因此,如果有人有效率和有效的方式,请分享。 或者,如果任何人都可以通过这个CSV映射指导mo如何正确地执行它,我将非常感激
答案 0 :(得分:6)
这有两种情况:
您只需要在目标表中插入数据:
insert into dbDestination.tblDestination (field1, field2, ...)
select ...
from dbSource.tblSource
备注强> 的
select
语句必须包含您需要复制到目标表的字段。select
语句中的字段必须与insert
部分我会将数据导出到纯文本文件,然后导入它。我个人更喜欢.csv文件,但它取决于你。
您有两种可能:使用select... into outfile
或使用系统终端(命令窗口)。
<强>一个。使用select... into outfile
和load data
在dbSource
所在的服务器中:
选择...... 来自dbSource.tblSource 进入outfile [你的目标文件] ...
将文件复制到目标服务器。
在dbDestination
所在的服务器中:
加载数据本地infile [你的文件] ...
备注强> 的
select
语句中的字段必须与insert
部分select... into outfile
和load data...
<强>湾使用终端
在Linux(或其他Unix系统)中,打开终端窗口并输入以下命令:
$ mysql -h [sourceServer] -u [yourUser] -p [yourPassword] dbSource -e&#34; select ...&#34; | sed&#39; s / \ t /,/ g&#39; &GT; yourDestinationFile.csv
将文件复制到目标服务器
启动MySQL控制台,并使用`load data ...``
备注强> 的
select
语句中的字段必须与insert
部分| sed 's/\t/,/g'
部分将mysql查询的输出转换为.csv文件。您可以使用其他分隔符而不是,
。有关sed
支票http://lowfatlinux.com/linux-sed.html ignore 1 lines
句子的末尾添加load data...
。将数据从一个数据库复制到另一个数据库是一项非常简单的任务。希望这能指出你正确的方向。
建议:下载MySQL版本的参考手册并随时掌握。您可以在那里找到大部分解决方案。
答案 1 :(得分:1)
一种简单的方法是使用以下语法:
INSERT INTO Database.Table(field 1, field 2,...)
SELECT * FROM Database2.Table2;
答案 2 :(得分:0)
当心!!!
INSERT INTO dbname.tablename(fields...);
SELECT * FROM olddatabase.oldtable;
仅在遵循id的情况下有效。
选择省略ID的字段,以便自动递增功能可以为导入的行提供新的ID。