将MYSQL某一数据库中的多条记录批量插入到另一MYSQL数据库时,记录不存在则插入,存在则更新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将MYSQL某一数据库中的多条记录批量插入到另一MYSQL数据库时,记录不存在则插入,存在则更新相关的知识,希望对你有一定的参考价值。

例如:需要将A库中的1000条记录批量插入到B库中或更新B库中已存在的数据,具体需求如下:
1、数据库A和库B均有表T1、T2、T3三张结构一样的表,但A库和B库各表的记录字段值是不完全一样的,这三张表包含的部分字段分别是:
  T1:ID,TYPEID,SENDATA,MID,CHANNEL
  T2:ID,TYPEID,NAME,SENDATA,MID,CHANNEL
  T3:ID,TYPEID,RENEW,ARCLIST,YEARS
 三张表中T2表是主表,T1和T3表是附表,三张表的数据通过ID相互关联,各库每条记录的数据分别存放在T2和T3表中,也就是说表T2和T3的数据整合在一起才能得到一条记录的完整数据,而T1主要是生成记录ID的表,即向T1中插入除ID以外的其他字段值时,该表将会递增自动生成新的ID;
2、将A库中字段NAME和YEARS相同的记录插入到B库中,如B库中不存在相同的记录则批量插入新的记录,如存在则不插入,而批理更新B库T3表中相同记录的RENEW字段值;(注:A库和B库的各记录ID值是不一定相同的,即使两库中存在相同的记录,该记录的ID值也不一定相同,因此,须首先向B库中的T1表插入数据,让T1表生成新的ID值,然后再分别向B库中的T2和T3表插入数据,而T2和T3表的ID值须从B库中的T1表获得,否则会出现ID主键值重复的错误)
烦请按上述举例的内容写出SQL语句,该SQL语句须能在phpMyAdmin中运行,谢谢!!
一楼回复的朋友,你写的语句,看不明白呀,感觉不是SQL语句(我是初学者,也许说错了),能否进行详细的说明。

参考技术A 1. Copy the Driver jar file to server/default/lib
2. Delete hsqldb-jdbc-state-service.xml and hsqldb-jdbc2-service.xml in
deploy/jms
3. Copy doc/examples/jms/ mysql-jdbc2-service.xml to deploy/jms

MYSQL 如何把查询到的结果插入到另一个表中?

语句:INSERT INTO  目标表  SELECT  * FROM  来源表 ;

也可以先查询出结果保存下来,再把保存的值放到insert语句。

MySQL 是一个关系型数据库,目前属于 Oracle
旗下公司。MySQL是开放源码软件,因此可以大大降低总体拥有成本。支持多线程,充分利用CPU资源。提供TCP/IP、ODBC和JDBC等多种数据库连接途径。支持大型的数据库。可以处理拥有上千万条记录的大型数据库

参考技术A 插入
INSERT INTO table1(col1,col2,col3) SELECT * FROM(SELECT col1,col2,col3 FROM table2)
删除
DELETE FROM table1WHERE col1 in (SELECT col1 FROM table2)

以上是关于将MYSQL某一数据库中的多条记录批量插入到另一MYSQL数据库时,记录不存在则插入,存在则更新的主要内容,如果未能解决你的问题,请参考以下文章

使用JDBC一次插入多条记录(以MySQL为例)

sql server返回插入记录的ID(多条记录)

ORACLE数据库 存储过程 中 从几张级联表中查询 出结果集,循环添加到另一张表的某一字段

mysql 批量更新多条记录(且不同值)的实现方法

将数据库中的某一表中的某一列或者多列添加到另一张表的某一列中——猎八哥FLY

用于批量插入的缓冲区数据