两库某表,字段总数相同,但字段顺序不同,导出和导入数据时,存在这个情况就不能直接导入,需要处理。
A、原表device表: col1、col2、col3、col4、col5..col6、col7
B、目标表device表:col1、col2、col6、col7、col3..col4、col5
1、首先导出原表数据:
mysqldump -t db_name -uuser -puserpasswd --socket=/test/mysql/mysql.sock --default-character-set=gbk--tablesdevice>device.sql &
导出文件insert语句如下:
INSERTINTO `device` VALUES (1,'北京test1'。。。。)
2、Insert时可以指定所要插入数据的列 INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) ,所以利用方法导入。
3、按照原表device字段顺序整理出insert into 语句:
INSERT INTO table_name (列1, 列2,列3, 列4, 列5, 列6, 列7) values
4、在导出文件搜索有几处需要替换,一定先搜索,以免遗漏
INSERTINTO `device` VALUES 替换成 INSERT INTO table_name (列1, 列2,列3, 列4, 列5, 列6, 列7) VALUES
5、指定导入:
mysql -uuser -puserpasswd --socket=/test/mysql/mysql.sock -D db_name<device.sql &>import-device.log
备注: -c 参数
导出时在insert中增加字段,这样对于原表和目标表的结构不同时很有用:mysqldump -t db_name -uuser -ppasswd --socket=/test/mysql/mysql.sock --default-character-set=gbk --tables device –c > device2.sql&