mysql 导入导出 csv_mysql文件导入导出为csv格式

1、将csv文件导入到mysql中,首先本人尝试了用python导入,

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

缺点:速度太尼玛慢了

果断放弃,然后找用mysql语言来进行csv文件导入:

1、首先用navicat建一个表,然后设置好表的格式之类的,utf-8就行了,否则乱码

NfI7Vb.jpg

NfI7Vb.jpg

2、这一步很重要:验证.csv编码格式是否正确,务必保证导入数据的编码格式是ANSI编码格式

PS:最近将csv导入到mysql中发现按照这个教程导入到mysql中的结果都是带有?的乱码格式,试了几次还是如此,后来索性不对csv进行编码,竟然直接导入成功了,怪哉怪哉~~

使用Notepad++打开test1.csv,若编码格式不正确,改变编码格式,如下图:

Z3EJfy.jpg

Z3EJfy.jpg

这块我弄了一小会,刚开始没整明白,现在再说一遍过程,首先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描述字段的分隔符,默认情况下是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中了,结果如下:

nyAFna.jpg

nyAFna.jpg

PS:有个set gbk选项,这是针对windows的csv文件的,使用这个格式导出是可以打开并且不乱码的,如果是要在linux上使用需设置为utf8格式,只要将gbk改为utf8即可。

另外如果针对几千万的文件想要导出表头不建议用本文所提方式,本人经过测试发现这种方法很坑,跑这段代码的时候我的c盘会占用很大空间,并且代码运行时间也很长。。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值