MySQL中遇到问题汇总:
1.mysql与CSV:
从csv格式导入到workbench中,新建一张表,点击右键,选择 table data import wizard,选择CSV文件,依次next即可;
从workbench中导出成csv格式的文件,选择如下按钮,文件类型选择csv即可。
2.json格式中的中文显示问题(python3下):
def jsonformat(self, list):
imgURL = [json.dumps({'imgURL': URL},ensure_ascii=False) for URL in list]
imgURL = '[{}]'.format(','.join(imgURL))
return imgURL
我们在post请求数据时,响应的内容是json数据,但是返回的json数据中文显示有问题,变成 \uXXX的形式。这是因为中文以 unicode 编码了,而默认是以ASCII解析的,中文不在ASCII编码中,所以无法显示。
如果不加 ensure_ascii=False 输出的 imgURL如果有汉字的话都默认给转换成一堆编码 如果加上的话 就都能正常显示变成了汉字。
3.数据库表中数据更新中出现问题:
例如,想要将表中的source设置为统一的字段:“付费模型”,需要以下两句话即可:
SELECT * FROM most3d_db.model1000_test;
alter table most3d_db.model1000_test add column source varchar(300) not null;
UPDATE most3d_db.model1000_test SET source='付费模型' WHERE ID>='1';
可能会报错,Error Code: 1175 You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column”错误,这是Workbench的安全设置导致的,通过设置就可以处理。(https://jingyan.baidu.com/article/6c67b1d6f0efca2787bb1eba.html)
在workbench的菜单栏点击“edit-->Preferences”,然后会弹出对话框“workbench preferences”,在左边栏点击“SQL Editor”,会看到最后一行是“Safe Updates……”是打钩的,我们只要缺消打钩即可,并重启workbench即可。
4.数据库修改部分数据:
(其他可参考:http://2853725.blog.51cto.com/2843725/1377342)
1.删除前一万个数据
delete from most3d_db.3dxy where 1=1 order by ID limit 10000;
2.按照某一项降序排序后删除前100个
delete from most3d_db.3dxy where 1=1 order by ID desc limit 100;
3.更新某部分的数据:
UPDATE models.moer SET description = name where 1=1 order by description asc limit 2000;(不确定修改数目时,按照某一列的值排序,修改前任意项 ,asc 为正序,desc为降序)
UPDATE models.thingiverse SET browse = '0' where id>=1 and id<=1000000 and browse=''(将满足某项条件的数据进行更改)
4.mysql中的字符串连接concat():
update models.yunchuang3d set description= concat(name,",工业零部件") where 1=1;
5.mysql中关于增加主键值并设置自增:(对于已有表增加一列并设置为自增序列其值只能从1开始,如果想对已有表增加自增序列并设置值从某一个具体地数字开始,需要重新建一张表)
CREATE TABLE `thingiverse13` (
`ID` int(11) NOT NULL,
`number` int(11) NOT NULL AUTO_INCREMENT,
`WebpageURL` longtext,
PRIMARY KEY (`number`)
) ENGINE=InnoDB AUTO_INCREMENT =231928 DEFAULT CHARSET=utf8;
INSERT INTO models.thingiverse13 (ID,WebpageURL) SELECT ID,WebpageURL FROM models.thingiverse3
6.mysql中关于后期数据修改,去掉空格、换行符、回车符:
update test_8_28.register_tbl set company = replace(company,' ',' ');
7.空格可以通过mysql 自带的replace来替换,如果是英文字符,注意只能通过将来个空格换成一个空格,不然会造成所有词连在一起
UPDATE models.thingiverse SET description = REPLACE(REPLACE (description, CHAR(10), ''), CHAR(13), '') where id>=1 and id<=1000000;
换行符【char(10)】和回车符【char(13)】
8.mysql中关于后期将一张数据量很大的表分成几张小表:
create table models.thingiverse1 select * from models.thingiverse where id>1 and id<=300000