MySQL导入问题,急!!! 有这样一个需求,两套同样的系统,有各自的数据库,什么都是一样的只是两个系统之间互不相连,想在向把其中一个系统的数据倒出来与另一个系统的数据汇总,小弟用mysqldump将数据导出来后在导入另一个系统时如果出现重复的主键数据就会出错,小弟试了下--replace关键字在导入的时候不支持,请教大家有没有什么办法解决这个问题。不知道我的问题描述清楚了没有。谢谢大家帮忙。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这种情况下一般是手工逐表来分析导入的。比如数据DB1 , DB2 各有表 tbl1,tbl2,tbl3,..tbln针对每个表,都要事先知道如何进行两表的数据合并。特别是在主键相同的时候如果操作。 我个人感觉先在第二个系统里里重新建立数据库和表,用来接收第一个系统的数据然后把第二个系统数据库里的表和已导入的表进行合并,可以考虑用insert into table(col1,col2..)select col1,col2,.. from table1或者写成存储过程这样应该可以避免主键带来的麻烦吧顺便问一句,你的主键是自增的吗? 也就是说第一次导入没有问题,第二次导入就会出现重复了,假如不考虑先删除在导入的方式,还有办法吗,在使用mysql -u root -proot 数据库名< d:\test.sql导入时有没有类似replace的关键字谢谢大家帮忙 手工修改一下你的d:\test.sql把其中的insert 语句改为INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;UPDATE table SET c=c+1 WHERE a=1; 将数据导入另一表后,检查此表KEY字段与工作表是否OR只导入不重复的数据 您好!能给我解释下 ON DUPLICATE KEY UPDATE c=c+1; UPDATE table SET c=c+1 WHERE a=1;两句话的意思吗,小弟是新手,谢谢了。 INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;如果主键记录已存在,则等同于UPDATE table SET c=c+1 WHERE a=1;http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#insert13.2.4. INSERT语法 在数据库A中再建立一个相同结构的表,将数据库B中的表导入到A库中新建的表中。然后对数据库A中的两个表进行union 可以将所有记录查询出来。 可以这样:1、先在要导入的数据库(应该是MYSQL吧)创建数据库,create database dbname; 2、然后进入这个数据库:use dbname; 3、在mysql>提示符下输入:source d:/test.sql注意这里的路径就是你到处后存放的test的路径,还有路径分隔符是"/"而不是"\";先试一下嘛,我也遇到这个问题,刚刚才解决 INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; UPDATE table SET c=c+1 WHERE a=1; 有没有按快捷键就能运行mysql语句的mysql管理软件? 关于关系代数和SQL的问题。 各位大哥都进来看下可以帮忙吗 ?顶下也好 谢谢 如何在Mysql实现TOP功能,注Limit实现不出来..请进来看看 mysql连接问题 mysql4.1数据恢复问题,只有frm文件,如何完整恢复数据! 十万火急!关于MYODBC远程连接MYSQL的问题,大家帮忙 权限设置问题。只能自己操作自己的数据库,不能越权。 apache+php+mysql+linux怎么设置邮件服务器???? 这个sql语句怎么写 mysql命令添加用户的问题 怎么用脚本来启动绿色版的Mysql
然后把第二个系统数据库里的表和已导入的表进行合并,可以考虑用
insert into table(col1,col2..)
select col1,col2,.. from table1
或者写成存储过程
这样应该可以避免主键带来的麻烦吧
顺便问一句,你的主键是自增的吗?
mysql -u root -proot 数据库名< d:\test.sql
导入时有没有类似replace的关键字
谢谢大家帮忙
把其中的insert 语句改为INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
UPDATE table SET c=c+1 WHERE a=1;
只导入不重复的数据
ON DUPLICATE KEY UPDATE c=c+1;
UPDATE table SET c=c+1 WHERE a=1;
两句话的意思吗,小弟是新手,谢谢了。
ON DUPLICATE KEY UPDATE c=c+1;如果主键记录已存在,则等同于UPDATE table SET c=c+1 WHERE a=1;
http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#insert
13.2.4. INSERT语法
然后对数据库A中的两个表进行union 可以将所有记录查询出来。
ON DUPLICATE KEY UPDATE c=c+1;
UPDATE table SET c=c+1 WHERE a=1;