是否可以将相关数据从一个数据库迁移到另一个数据库,但列名不同?我谈论的是非常大量的数据。有人有想法吗? 我已尝试将其导出到CSV并导入到另一个数据库,但我收到错误消息:
invalid column count in CSV input in line 1
如果有人有高效和有效的方法,请分享。或者如果有人可以指导我如何在Excel中进行CSV映射,我会非常感激。
是否可以将相关数据从一个数据库迁移到另一个数据库,但列名不同?我谈论的是非常大量的数据。有人有想法吗? 我已尝试将其导出到CSV并导入到另一个数据库,但我收到错误消息:
invalid column count in CSV input in line 1
如果有人有高效和有效的方法,请分享。或者如果有人可以指导我如何在Excel中进行CSV映射,我会非常感激。
这里有两种情况:
您只需要将数据插入到目标表中即可:
insert into dbDestination.tblDestination (field1, field2, ...)
select ...
from dbSource.tblSource
注意事项
select
语句必须包括你需要复制到目标表的字段。select
语句中的字段顺序必须与insert
部分中字段列表指定的顺序相同。我会将数据导出为纯文本文件,然后再进行导入。我个人更喜欢使用 .csv 文件,但这取决于您。
您有两种可能性:使用select... into outfile
或使用系统终端(命令窗口)。
a. 使用 select... into outfile
和 load data
In the server where dbSource
is:
select ...
from dbSource.tblSource
into outfile [your destination file]
...
Copy the file to the destination server.
In the server where dbDestination
is:
load data local infile [your file] ...
注意事项
select
语句中的字段顺序必须与insert
语句中指定的字段顺序相同。select... into outfile
和load data...
的正确用法。b. 使用终端
In Linux (or other Unix systems), open a terminal window and enter the following command:
$ mysql -h [sourceServer] -u [yourUser] -p[yourPassword] dbSource -e"select ..." | sed 's/\t/,/g' > yourDestinationFile.csv
Copy the file to the destination server
Start MySQL console, and use `load data ...``
注
select
语句中的字段顺序必须与insert
语句中的字段列表中指定的顺序相同。| sed 's/\t/,/g'
部分将mysql查询的输出转换为.csv文件。您可以使用其他分隔符代替,
。有关sed
的进一步参考,请查看http://lowfatlinux.com/linux-sed.htmlload data...
句子的末尾添加ignore 1 lines
即可。从一个数据库复制数据到另一个数据库是非常简单的任务。希望这些内容能帮到您。
一点建议:下载您的MySQL版本的参考手册并随身携带。您可以在那里找到大多数解决方案。
一个简单的方法是使用以下语法:
INSERT INTO Database.Table(field 1, field 2,...)
SELECT * FROM Database2.Table2;
使用这个:
INSERT INTO dbname.tablename(fields...);
SELECT * FROM olddatabase.oldtable;
小心!!!
INSERT INTO dbname.tablename(fields...);
SELECT * FROM olddatabase.oldtable;
只有在 ID 遵循的情况下才能工作。
选择省略 ID 的字段,以便自动递增可以为导入的行提供新的 ID。
LOAD DATA INFILE your_file.csv INTO your_table
命令将其加载到你的表中。 - zipser