昨天突发奇想,要把一(小)堆数据导入到MySQL中,本来以为是超简单的事,没想到一路上连滚带爬,到今天才搞定。遇到的问题集中在中文保存和数据长度上,随手总结一下。

1、转码。

我的数据有的列包含中文,编码是utf-8,而MySQL的数据编码默认是Latin,在mac系统下解决这一问题,最优解决方案在这里:

非常详细,手把手教你改MySQL配置文件my.cnf,这个文件里主要是一些全局变量的设置,我们之后还要和这个文件打很多次交道。修改配置文件,是从服务器级别把MySQL的编码改成utf-8,一劳永逸。

2、特殊字符。

n小时之后,当我看着屏幕上的error,准会会想起那个好基友让我不要用中文做字段名的下午。当我决定要用中文,还是一堆包含了特殊字符的中文做字段名时,悲剧就开始了。MySQL中,含有特殊字符(比如()= + -、:)的数据库名、数据表名、字段名,要用反引号 ` 括起来,不然就会出怎么创建表也创建不出来的错误(Error Code: 1064)。举个例子:

CREATE TABLE your_table (`ID:class` VARCHAR(20) NOT NULL);

这里还有个小问题,字段名默认长度为64,如果字段名过长,会出(Error Code: 1059),修改一下列名就可以了。原始数据也要修改。

3、row长度。

以为解决了转码和特殊字符就能创建表了吗?Naive!我的原始数据是一个有200多列的宽宽的表,而且数字都很大,这就导致了用float类型创建的字段,数据会超过其规定长度。于是我选择用VARCHAR。但是这时候会报“Row size too large (> 8126).”这么一个错误,这涉及到MySQL的存储引擎是InnoDB还是MyISAM的问题,简单来说,MySQL默认的存储引擎是优点多多的InnoDB,但是InnoDB存在一个bug,就是row size不能超过8126,所以如果没有什么特殊需求,可以把表创建的引擎改为MyISAM。举个例子:

CREATE TABLE your_table (ID VARCHAR(20) NOT NULL) ENGINE=MyISAM;

4、导入数据

建完表就可以导入数据了,导入数据有三个方法可选,workbench手动导入,用python库pandas里的DataFrame.to_sql,以及load data infile命令。最快的是load data infile,反正我6万多行、200多列的数据几秒钟就导入了,workbench和DataFrame.to_sql慢的人想哭,workbench还可能卡死。注意如果出Errcode13 -Permission denied 的错误,给load data infile语句里加入local,如load data local infile。

另外如果报Error Code: 1290,说明导入导出被限制了,不建议把数据放在/tmp/文件里,而是修改配置文件my.cnf下的[mysqld],加入secure_file_priv =,即可。

python导入mysql慢_如何更高、更快、更强地用python向mysql导入数据相关推荐

  1. Java应该是更高级别还是更低级别?

    总览 Java 8带来了许多简化的功能,例如Lambda表达式, 类型注释和虚拟扩展 . 尽管此功能很重要:a)有价值,b)赶上较凉的语言,但是这些更丰富,更高级的功能是Java应当重点关注的领域. ...

  2. 精度更高,视野更大的Photoneo3D相机

    如今3D视觉在工厂应用方面越来越广泛,机床上下料,拆码垛,无序抓取,更多的应用到了3D视觉,photoneo作为一款精度高,视野大的进口3D相机,在3D视觉行业已经占据了越来越多的市场. Photon ...

  3. 技术更高,设计更远:华为全屋智能设计大赛的审美之跃

    "人生到处知何以?应似飞鸿踏雪泥.泥上偶然留指爪,鸿飞那复计东西." 很多设计师朋友跟我说,苏轼这首<和子由渑池怀旧>是对设计与审美的最高理解.好的设计,应该仅仅留下一 ...

  4. python女神讲师视频教程_阿里巴巴讲师高赞Python全集视频教程,这就是你需要的...

    Python是世界上功能最多,功能最强大的编程语言之一.通过Python,可以编写自己的应用程序,创建游戏,设计算法,甚至编程机器人.而且Python的热度现在一直高居不下,比如,完成同一个任务,C语 ...

  5. 搭建pxc集群时需要先安装mysql么_完美起航-高可用MySQL数据库之PXC集群

    高可用MySQL数据库之PXC集群 前言 在上一篇文章介绍了时下流行的几种数据库产品后(公众号发送"NewSQL"查看),有不少小伙伴表示对自动集群的数据库感兴趣,特别是Cockr ...

  6. java好还是python好-Python和Java哪个薪资更高、远景更好?

    运用Python的人越来越多,为啥?人工智能浪潮的兴起与TensorFlow以及爬虫结构的普及让Python有了用武之地:大数据与云计算解决方案的运用也为Python的成功猛推了一把.作为数据科学最盛 ...

  7. python和java哪个好-Python和Java哪个薪资更高、远景更好?

    运用Python的人越来越多,为啥?人工智能浪潮的兴起与TensorFlow以及爬虫结构的普及让Python有了用武之地:大数据与云计算解决方案的运用也为Python的成功猛推了一把.作为数据科学最盛 ...

  8. python 导入excel 分词_如何对excel表格里的词结巴分词python

    展开全部 # -*- coding: utf-8 -*- import jieba ''''' Created on 2015-11-23 ''' def word_split(text): &quo ...

  9. python dict批量选择_这一定是你见过最全面的python重点

    由于总结了太多的东西,所以篇幅有点长,这也是我"缝缝补补"总结了好久的东西. Py2 VS Py3 print成为了函数,python2是关键字 不再有unicode对象,默认st ...

  10. java下拉菜单_Web前端和Java开发哪个薪资更高,发展前景更好?

    互联网行业飞速发展,因此有很多小伙伴想要进入IT行业分一杯羹,但是学什么技术更好,哪一个语言的就业薪资更高,就成了困惑大家的主要问题. 网上关于"Web前端和Java开发谁的薪资高,发展前景 ...

最新文章

  1. 台式机安装系统时区分BIOS与UEFI
  2. PAT-乙级-1020. 月饼 (25)
  3. jvm 崩溃日志设置_JVM致命错误日志(hs_err_pid.log)分析(转载)
  4. nginx反向代理初探
  5. java char i=2+#039;2#039;;_图说String(三)String中#039;+#039;和StringBuilder的区别
  6. pyqt快速编程指南 源码_适合 C++ 新手学习的开源项目——在 GitHub 学编程
  7. 夯实Java基础(二)——面向对象之封装
  8. 【BZOJ3998】弦论(后缀自动机)
  9. 小学语文思维导图免费模板合集!家长必收藏
  10. CC1310F128RGZR 无线收发器 微控制器
  11. OpenGL学习整理------着色器
  12. 【信息系统项目管理师】信息系统项目管理师计算题汇总
  13. 超便利在线电路仿真软件
  14. 2020寒假第三周总结
  15. android焦距跟实际距离,android相机焦距和焦距不变
  16. 操作系统基础(存储管理)
  17. 100000行级别数据的 Excel 导入优化之路
  18. SpringBoot OSS实战之用户头像上传
  19. (operational-transformations)ot算法两个字符串如何生成ot操作转换的工具
  20. OilRig又瞄准了中东电信组织,并在其代码库中增加了带有隐写术的新型C2通道(上)

热门文章

  1. 恩施州推进大数据监督检查工作规范化常态化
  2. Android学习笔记之如何将数据保存到SDCard
  3. 编码风格之变量的命名规则
  4. 对话框的数据交换--MFC深入浅出
  5. python桌面程序臃肿_Python自动化整理文件“大升级”,任意路径下文件,都给你整理的明明白白!...
  6. ABP项目后台初始化数据库
  7. SQLite数据类型详解
  8. C# winfrom单击事件弹出浏览器
  9. git log 查看自己修改的行数_Git 笔记 day2
  10. MAC:一个数据缓冲区,作为参数传递到另外一个函数就崩溃