SQL查重和防止数据重复

今天从爬下来的医院数据创建一个新数据表时遇到了错误,这个也是预料中的,因为爬取的医院名称有的在括号内还有一个名称,我处理数据时把括号及里面的数据删除掉了,所以结果肯定有少量重复。解决办法是重新处理数据写入SQL,重新设置primary key

mysql> CREATE TABLE tier3_hospital (UNIQUE (hospital_name_new)) SELECT hospital_name_new,hospital_tier,Provinces,Cities,address,phone FROM hospital_list_table WHERE hospital_tier LIKE “%三 级%”;
ERROR 1062 (23000): Duplicate entry ‘吉林大学第三医院’ for key ‘hospital_name_new’
mysql> SELECT COUNT(*) as repetitions, hospital_name_new
-> FROM hospital_list_table
-> GROUP BY hospital_name_new
-> HAVING repetitions > 1;
+————-+———————————-+
| repetitions | hospital_name_new |
+————-+———————————-+
| 2 | 中德精神康复医院 |
| 2 | 兴义市人民医院 |
| 2 | 内蒙古胸科医院 |
| 2 | 南京市长江医院第四医院 |
| 2 | 南京长江医院第三医院 |
| 2 | 南京长江医院第二医院 |
| 2 | 吉林华侨医院 |
| 2 | 吉林大学第三医学院分院 |
| 2 | 吉林大学第三医院 |
| 2 | 呼伦贝尔盟第二人民医院 |
| 3 | 唐山华新纺织集团医院 |
| 2 | 四川省中医药研究院中医医院 |
| 2 | 太原市小店区亲贤医院 |
| 2 | 太原市煤炭气化公司职工医院 |
| 2 | 孝感市人民医院 |
| 2 | 安丘市白求恩医院 |
| 2 | 安丘市精神卫生中心 |
| 2 | 安溪县中医院 |
| 2 | 宜宾市康复医院 |
| 2 | 广州市番禺区岐山医院 |
| 2 | 广西亭凉医院 |
| 2 | 广西龙泉山医院 |
| 2 | 张家口市肺科医院 |
| 2 | 本溪钢铁公司胸科医院 |
| 2 | 梧州市里湖医院 |
| 2 | 武汉钢铁公司第二职工医院 |
| 2 | 武汉钢铁公司第二职工医院结核病院 |
| 2 | 河北省中医院 |
| 2 | 淮南朝阳医院 |
| 2 | 牡丹江市结核医院 |
| 2 | 苏州九龙医院 |
| 2 | 襄阳汽车轴承股份有限公司医院 |
| 2 | 镇江市烧伤医院 |
| 2 | 长治市商业医院 |
+————-+———————————-+
34 rows in set (0.04 sec)

下面这个情况就很尴尬了:

mysql> SELECT * FROM hospital_list_table
-> WHERE hospital_name_new=’吉林大学第三医院’;
+———————————————-+——————-+————————-+———–+——————+—————+——————————-+————–+——-+———+
| hospital_name | hospital_name_new | city | Provinces | Cities | hospital_tier | address | phone | email | website |
+———————————————-+——————-+————————-+———–+——————+—————+——————————-+————–+——-+———+
| 吉林大学第三医院 | 吉林大学第三医院 | 吉林省-延边朝鲜族自治州 | 吉林省 | 延边朝鲜族自治州 | 三级甲等 | 吉林省长春市二道区仙台大街2号 | 0431-4646331 | NULL | NULL |
| 吉林大学第三医院(中日联谊二部)(吉大三院) | 吉林大学第三医院 | 吉林省-长春市 | 吉林省 | 长春市 | 三级甲等 | 吉林省长春市仙台大街2号 | 0431-5656921 | NULL | NULL |
+———————————————-+——————-+————————-+———–+——————+—————+——————————-+————–+——-+———+
2 rows in set (0.02 sec)

http://huanyouchen.github.io/2018/05/22/mysql-error-1406-Data-too-long-for-column/

另外,mysql报错:1406, “Data too long for column”,可以:

在MySQL中设置这个:

mysql> SET @@global.sql_mode= ”;

python入门经验贴

这段话发给朋友的,码了自己的心路历程。

你的学习能力远高于我,我建议你从python开始,掌握基本语法后尝试简单的数据分析和办公自动化,不然脱离了实际工作你很快就忘记了。工作中一些简单重复的paperwork完全可以考虑python,比如合并批量excel表格,更新模板类的ppt(比如每次只需要更新图片,我就做了个脚本更新周报)。
sql上手快,但是很多命令如果不常用忘记很快。主要就是查改增删,高大上的你没有机会用。
关系型数据库特别适合存放大数据,比如几十万行的数据表,超过百万excel就无能为力了,太慢(比如我常见的各种导航数据,很多项目都是百万炮,excel处理非常不方便)。总之要结合工作需求,学习快也更有动力。
入门我用的比较经典的learn python the hard way(短时间内给你个编程的感觉),敲完这本书后接着学习基本语法,我用的foundations for data analytics,介绍的基本语法,处理文本,csv,excel,sql等,因为这些我经常用。
然后我就开始了python for data analysis,这次休假我就能刷完了,500页左右。必须手动敲代码,不然会眼高手低。其实这个阶段我已经能写简单的脚本了,在船上工作不忙,三周左右我做了五个小项目,每天持续工作十几个小时,ppt周报自动化,爬虫肺炎疫情/全国医院数据/全国的A股上市公司数据,代码也打了几千行(有些网上有可以拿来用,需要修改定制)。比如简单爬虫是可以模板化的,做好一个后再做其他的就容易了。
我刚开始在github分享脚本,最近放上去了一个肺炎疫情的,搜索chenxuzhen应该能找到。
刷完这几本书再加十个以上小项目,我做简单的数据分析应该就畅通无阻了。我比较慢,中间放弃了很久(买房子耽误了很多时间),但是我估计我花了至少三个月,刷完这三本书四个月是必须的,因为中间还会尝试做简单的编程项目。
入门一般都是从简单爬虫入手,但是这个东西不需要掌握太多高深的,因为高难度的爬虫一个人很难做到,涉及到各种反爬策略(大网站都有),比如验证码复杂的不仅需要图像处理还需要机器学习(只是这两个技能入门也得一两个月了)。
我的目的就是数据分析,以后熟练了再好好看看数学尝试图像处理(这个很多和地球物理重叠,毕竟涉及到信号处理)。python可做的太多,我需要从工作需求开始,学习更快。
以上就是我简单的学习经验,看起来不多,但是都是刷了几千个帖子+实际操练得来的,纸上得来终觉浅,绝知此事要躬行,编程还是要靠实践。
这次上船后我有个小项目计划,就是从大量水下机器人抓取的图片中识别并抓取一些关键信息来校对图片的文件名并修改,因为这些都是rov technician手动录入错误百出,现在每天能步一百多节点,布一个节点就有布前,布中,收回前,三个图片,一个项目轻松数以万计的图片了,这些放入pdf中时都是需要检查一下的。pdf自动化同事已经做好了,bash+latex,我有时间用python重写一次。

扫我获取html仪表盘
最近做的BI Panel
刷码场景1
刷码场景2