将不存在的记录插入Mysql表
Posted
技术标签:
【中文标题】将不存在的记录插入Mysql表【英文标题】:Insert not existed records into Mysql table 【发布时间】:2018-03-22 11:08:54 【问题描述】:您好,在我们的系统中,我们丢失了一个账户,我们需要找回它。幸运的是,我们有一个数据库备份。现在我正在尝试将备份 mysql 数据库中的记录添加到当前。但我有一个问题。当我尝试插入数据时,我收到错误“ID 重复”。这是我从备份导出表时得到的。
INSERT INTO `anketu_perziuros_mine` (`id`, `anketa`, `kada`, `timemark`) VALUES
(955009, 498044, 1443021887, '2015-09-23 18:24:47'),
(147188, 498044, 1443018663, '2015-09-23 17:31:03'),
(948120, 498044, 1443017899, '2015-09-23 17:18:19'),
(958152, 498044, 1442954185, '2015-09-22 23:36:25'),
(888916, 498044, 1442863283, '2015-09-21 22:21:23'),
(782244, 498044, 1442839575, '2015-09-21 15:46:15'),
(827707, 498044, 1442746875, '2015-09-20 14:01:15'),
(869393, 498044, 1442683453, '2015-09-19 20:24:13');
我是 mysql 的新手。我尝试了很多方法(来自教程),但都失败了。 IF NOT EXISTS如何实现,或者有其他解决方案?
【问题讨论】:
在插入之前检查它是否存在如何? ***.com/questions/3164505/… 听起来你正在使用的备份与当前数据库不同步,因为有重复记录。 【参考方案1】:这里有一个说明如何实现恢复丢失的数据。见Demo on SQL Fiddle。
-- suppose you have a table
create table test (
id int not null primary key,
val int not null
);
-- with these data
insert into test values
(1,1),
(2,2),
(3,4),
(4,90);
-- lets assume you lost these data from the test table
delete from test where id in (1,4);
-- now you want to restore the lost data from your backup
-- do the following.
-- create a temporal table with schema of test table
create table test2 as
select * from test limit 0;
-- insert backup data into the temporal table
insert into test2 values
(1,1),
(2,2),
(3,4),
(4,90);
-- copy backup data from temporal table into the real table
insert into test
select * from test2 b
where not exists (select null from test a where a.id=b.id);
-- drop backup data
drop table test2;
【讨论】:
以上是关于将不存在的记录插入Mysql表的主要内容,如果未能解决你的问题,请参考以下文章
net.ucanaccess.triggers.TriggerException:表不存在。 :Z_2015_02_24
Laravel 模型 - 如果数据库表不存在则返回 null