问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql 数据库导入 如果原来表数据在导出之后有新的数据 增加或更改

发布网友 发布时间:2022-04-30 08:04

我来回答

3个回答

懂视网 时间:2022-04-30 12:25

* from teacher_grade; select * into outfile ‘d:/testmysql/result‘ from teacher_grade;

技术分享

注意:
可以自动创建文件,但是不能重写已有文件。
生成的文件格式:默认的采用行来区分记录,制表符区分字段。

为了满足某种特别的需求,会采用不同的分割方式。支持在导出数据时,设置记录与字段的分隔符。
通过如下的选项:
fields:设置字段选项
lines:设置行选项(记录选项)

默认值:
字段:fields terminated by ‘ ‘ enclosed by ‘‘ escaped by ‘\‘
记录:lines terminated by ‘ ‘ starting by ‘‘

也可以根据实际情况自己设定。

select * into outfile ‘d:/testmysql/result‘ 
fields terminated by ‘	‘ enclosed by ‘*‘
lines terminated by ‘
‘ starting by ‘start:‘
from teacher_grade;

技术分享

注意:
常规的所有的记录,应该通过行来显示。
但是也有例外,例如保存二进制数据:Blob binary使用into dumpfile

select * into dumpfile ‘d:/testmysql/resultbin‘ from teacher_grade limit 1;
select * into outfile ‘d:/testmysql/result‘ from teacher_grade limit 1;

技术分享

增加数据

insert into tbl_name (字段列表) values (值列表)

可以不将所有的字段都插入数据。
如果说需要完成部分字段的插入,需要必须存在字段列表。

没有插入部分字段,可以使用下面的set语句。

insert into teacher_grade (name) values (‘黄继光‘);
insert into teacher_grade set name=‘黄继光‘;

insert into teacher_grade set t_name=‘张三丰‘,c_name=‘太极拳‘;

insert into teacher_grade (t_name,c_name) values 
(‘黄继光‘,‘射击‘),(‘黄飞鸿‘,‘飞毛腿‘);

插入数据时,如果主键冲突会如何?
默认有主键约束,不会插入成功;

但是可以在insert语法内,可以进行控制。
在主键冲突时,改成执行更新操作。

insert into teacher_grade (id,t_name,c_name) values
(13,‘张无忌‘,‘太极拳‘) on duplicate key 
update t_name=‘张无忌‘,c_name=‘太极拳‘;

注意:这里update后面不跟set。

流程:
先判断是否插入成功?
如果失败(主键冲突|唯一索引冲突),则进行更新操作。

插入(失败)
更新
更新完毕

插入数据源:
除了使用自定义的数据外,还可以使用select语句查询到数据,作为插入的数据源。

insert into teacher_grade (t_name,c_name) 
select t_name,c_name from teacher_grade;

数据可以来源于其他数据表,要求字段数量和类型一致即可。

insert into teacher_grade (t_name,c_name) 
select t_name,class_name from teacher;

通过强制使用default关键字或者default()函数使用默认值。

alter table teacher modify days tinyint(3) unsigned default 10;

insert into teacher values 
(10,‘xxx‘,‘yyy‘,default),
(11,‘xxx‘,‘yyy‘,default(days));

replace
主键或唯一索引冲突,则替换,否则插入。

insert into teacher values(1,‘老子‘,‘儒家‘,30);
如果插入冲突,先删除旧记录,再插入新纪录。
replace into teacher values(1,‘老子‘,‘儒家‘,30);
主键不冲突,直接插入。
replace into teacher values(15,‘老子‘,‘儒家‘,30);

导入select * into outfile ‘file‘命令导出的内容

load data infile ‘file‘ into table tbl_name;

注意:
导入时,涉及到数据增加,需要考虑是否冲突的情况。
通常可以在导出时,将主键导出成null。在导入时,利用自动增长的特性,可以形成新的主键。

select null,t_name,class_name,days from teacher;
desc teacher;
alter table teacher modify t_id int auto_increment;
alter table teacher drop primary key;

alter table teacher modify t_id int primary key auto_increment;
load data infile ‘d:/testmysql/result‘ into table teacher; 

删除数据

允许使用条件:删除符合条件的数据。
允许使用limit:限制删除的记录数,limit n;

常见场景:
limit配合order by来使用。(先将结果排序,再删除固定数量的记录数。)
delete from teacher order by days limit 10;

如果只有order by是没有意义的。

允许连接删除
允许使用类似的join语法,同时删除多个表内的记录。

create table one(
one_id int,
one_data char,
public_field int
);
create table two(
two_id int,
two_data char,
public_field int
);
insert into one values(1,‘a‘,10);
insert into one values(2,‘b‘,20);
insert into one values(3,‘c‘,30);
insert into two values(2,‘b‘,20);
insert into two values(3,‘c‘,30);
insert into two values(4,‘d‘,40);
select * from one;
select * from two;

技术分享

select * from one join two using(public_field);

先提供表名,再提供连接条件。

delete from one,two using one join two on one.public_field=two.public_field where one_id=2;

技术分享
如果不使用连接,则需要分别删除。
delete one
delete two

删除表所有数据
delete from test;

清空表
truncate teacher;
重建自定增长的主键,不会返回删除的记录数。
技术分享

delete与truncate的区别
delete:逐行删除。
truncate:删除表,新建表。

更新数据

replace
insert onduplicate key update
条件更新,排序更新,限制条数
update ... where ... order by ... limit ...
技术分享

多表更新
技术分享

update one join two on one.public_field = two.public_field 
set one_data=‘x‘,two_data= ‘y‘ where one_id=3;

技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载。

MySQL增加,删除,更新,导出数据

标签:mysql   导入   增加   修改   删除   

热心网友 时间:2022-04-30 09:33

你作这样的操作无非是因为误删了数据,要进行恢复原数据,又不想冲掉后来更新的新数据,按下面方法来做吧:
1.按日期筛选出已经作更新的数据表中数据,并作导出备份
2.将你需要恢复导入的数据按更新导入UPDATE
3.将第1步已经备份的数据导入UPDATE

热心网友 时间:2022-04-30 10:51

先把数据导入临时表,再按照你的要求用sql联合查询导入吧
如,你要处理table1,把新数据导入到table2,之后联合查询table1和table2,并导入新表中追问有点明白 能否再详细点? 谢谢

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 Excel怎样减少小数点后位数,而不要四舍五入? 史上最强师兄境界划分是什么啊 颅脑加速伤减速伤等重加分啊! 被同行ddos攻击了怎么办? 奔驰s300多少钱2010款 晟的笔画顺序怎么写 周末休闲,WEY VV5相伴,优秀的表现让我深爱! 2010款奔驰s300气压泵价格多少钱 奔驰S300山地车值多少钱 氮气减震有什么作用? 造梦西游3八戒怎么打玲珑宝塔? 我有款08年的奔驰S300现在能卖多少钱? 诛仙2 15线宝塔任务怎么做啊 买奔驰s300乚要多少钱才能上路 造梦西游3 玲珑宝塔怎么打(八戎) 奔驰S300大约多少钱? 奔驰S300轿车多少钱 帝国时代3亚洲王朝怎样造第一关里的建筑 天书世界宝塔如何升级 宝塔升级攻略 奔驰s300什么价格?进口还是国产的? 仪表盘上有个像冰淇淋灯亮是啥意思? 泰勒冰淇淋机加料灯不亮了怎么回事儿? 冰淇淋显示灯不亮按键失灵 冰淇淋模型灯箱不亮啦怎么回事 可以修吗 新买的奇瑞冰淇淋阅读灯不会亮 怎么回事 奇瑞qq冰淇淋日间行车灯怎么关 奇瑞冰淇淋后面的两个灯一样吗 冰淇淋机板面灯不亮怎么修 lg冰淇淋手机的键盘灯颜色不同?都有哪些颜色? 冰淇淋机停止灯是亮的按其他开关没有反应是什么原因 如何与宜家商业合作卖宜家的产品 仪表盘上有个冰淇淋一样的图标中间有个感叹号是什么意思 皮卡堂星星被双人床 LG icecream 冰淇淋手机的呼吸灯只有雨滴、心跳、闪电三种模式吗? 冰激凌宫殿 作文 皮卡堂许多小草莓窗 “文雅少年,阳光成长”主题手抄报有哪些? 有哪些服装销售技巧类的文章或书籍? 服装导购员所需要的书籍有哪些? 四好少年漫画怎么画