加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱资讯网 (https://www.52junxun.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql文件导入导出为csv格式

发布时间:2022-09-19 14:46:23 所属栏目:MySql教程 来源:
导读:  1、将csv文件导入到mysql中,首先本人尝试了用python导入,

  优点:可以在程序里面修改导入的各种方式,格式之类的,不必去mysql中操作,

  缺点:速度太尼玛慢了

  果断放弃,然后找用mysql
  1、将csv文件导入到mysql中,首先本人尝试了用python导入,
 
  优点:可以在程序里面修改导入的各种方式,格式之类的,不必去mysql中操作,
 
  缺点:速度太尼玛慢了
 
  果断放弃,然后找用mysql语言来进行csv文件导入:
 
  1、首先用navicat建一个表,然后设置好表的格式之类的,utf-8就行了,否则乱码
 
  2、这一步很重要:验证.csv编码格式是否正确,务必保证导入数据的编码格式是ANSI编码格式
 
  PS:最近将csv导入到mysql中发现按照这个教程导入到mysql中的结果都是带有?的乱码格式,试了几次还是如此,后来索性不对csv进行编码,竟然直接导入成功了,怪哉怪哉~~
 
  使用Notepad++打开test1.csv,若编码格式不正确,改变编码格式,
 
  这块我弄了一小会,刚开始没整明白,现在再说一遍过程,首先ctrl+a全选你的数据,然后ctrl+c复制数据,然后点击编码-以ANSI格式编码,然后ctrl+v粘贴,最后ctr+s保存 ok!
 
  3、直接在navaicat中ctrl+q,然后将下面的代码输入进去,其中路径要选择好,然后table后面的test就是你要将csv导入的table,set gb2312防止乱码,点击运行就ok了
 
  load data local infile 'C:\\Users\\Administrator\\Desktop\\result\\des_con_count.csv' into table test character set gb2312
 
  fields terminated by ',' lines terminated by '\r\n';
 
  需要注意的是,csv文件名必须为英文名,中文名会出现找不到csv文件的情况。
 
  注:Error 1261(01000):Row XX doesn't contain data for all columns
 
  Method:本错误信息提示第XX行数据不足,查看你数据库表中建立的字段和数据中提供的字段数目是否相同,只有二者数目一致,才可以导入。
 
  Error 1366(HY000):Incorrect string value: '\x95F\xBE\xF4\xC6\xFB...' for column 'enterprise' at row XX
 
  Method:本错误信息提示第XX行‘enterprise’字段出现不正确的字符,查找之后发现我在这个字段的数据含有2个比较复杂的汉字“旻爵”,可能无法识别,把这2个字去掉之后这个错误便消失了。(这是别人写的,我没遇到过)
 
  Error 1366(HY000):Incorrect integer value: ' ' for column 'money' at row XX
 
  Method:本错误信息提示第XX行出现不正确的int值,可能原因是数据库“money”字段定义的数据类型是int型,而数据中存储的却不是int型(可能是double型、float型之类的)--这种情况一般是数据类型出现不一致的问题。
 
  Error 1265(01000):Data truncated for column 'money' at row XX
 
  Method:本错误信息提示第XX行数据被截断,可能原因是数据库中‘money’字段是double型或者float型,但是数据文件中可能存在null值,即这个数据值可能是不存在的,解决方案是将这个缺失的字段补‘0’
 
  下面这一堆东西是如何将mysql中的table导出到csv中:
 
  select * from table into outfile 'C:/Users/Administrator/Desktop/table.csv' character set gbk fields terminated by ',' optionally enclosed by '"' lines terminated by '\r\n';
 
  废话不多说,直接在navicat中选择你要导出的table,然后直接ctrl+q打开查询窗口,然后输入上述代码,其中table就是准备导出的表,后面的路径就是你想要把导出的表放在哪的文件夹路径, character set gbk 就是设置导出表的格式,否则表中含有中文会出现乱码的情况。
 
  terminated by分隔符:意思是以什么字符作为分隔符
 
  enclosed by字段括起字符
 
  escaped by转义字符
 
  terminated by描述字段的分隔符MySQL 导出数据,默认情况下是tab字符(\t)
 
  enclosed by描述的是字段的括起字符。
 
  escaped by描述的转义字符。默认的是反斜杠(backslash:\ )
 
  PS:如果想要导出的csv文件是带有字段名称,按照如下方式进行:
 
  select * into outfile 'C:/Users/Administrator/Desktop/combin_tag.csv'
 
  character set gbk fields terminated by ',' optionally enclosed by '"' lines
 
  terminated by '\r\n' from
 
  (SELECT 'LEVEL','TAG','COMBIN_TAG','SCORE' UNION SELECT LEVEL,tag,combine_tag,score from 拼接结果本机) b;
 
  这样就将 “拼接结果本机”中的LEVEL,TAG,COMBINE_TAG,SCORE四个字段名字也都导入到csv中了,结果如下:
 
  PS:有个set gbk选项,这是针对windows的csv文件的,使用这个格式导出是可以打开并且不乱码的,如果是要在linux上使用需设置为utf8格式,只要将gbk改为utf8即可。
 
  另外如果针对几千万的文件想要导出表头不建议用本文所提方式,本人经过测试发现这种方法很坑,跑这段代码的时候我的c盘会占用很大空间,并且代码运行时间也很长。。。
 

(编辑:我爱资讯网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!