苏南大叔在本篇文章中,描述一个比较常见的mysql的数据导入命令mysqlimport。安装过mysql的系统里面,一般都会有这个命令。这个命令和传统的mysql里面的source命令是不同的,具体哪里不同。可以参考本文中的描述。在网上人云亦云的文章里面,这个mysqlimport命令是被很大误解的。

苏南大叔:如何使用mysqlimport命令,导入结构化数据? - mysql-import
如何使用mysqlimport命令,导入结构化数据?(图3-1)

凡事大家都自己亲自试试,苏南大叔的理解也不一定对。但是苏南大叔可以肯定的是:本文中的坑,网上很多教程都没说。

基本概念

本文的例子中,mysql有个表叫做xmm,它有abc三个数据库。本文的操作对象,并不是sql文件,而且结构化的文本文件,类似于大家以前常见的.csv文件。

注意:导入的文件名(不包含后缀),和数据库里面的表名是一一对应的。这点非常非常重要,意思是这个命令根本不管表结构的事情,仅仅负责表数据! 并且要导入的数据的文件名,是有特殊要求的。

苏南大叔:如何使用mysqlimport命令,导入结构化数据? - data-file-foramt
如何使用mysqlimport命令,导入结构化数据?(图3-2)

注意:默认的分隔符是制表符(截图上表现为一个灰色的右箭头),可以用命令参数--fields-terminated-by控制更改。例如:--fields-terminated-by='|'

基本命令

mysqlimport -u{user} -p {dbname} --local {data_file_path}

例如:

mysqlimport -uroot -p xmm --local /db/a.txt

或者:

mysqlimport -uroot -p --fields-terminated-by='|' --local xmm /db/a.txt

不出意外的话,输入{user}对应的数据库密码之后,就可以正确导入相关数据到数据库了。不过,这里需要说明的是:这里的导入也不一定都是成功的。注意看结果输出里面的skipped后面的数字,就是导入失败的数据条数。

苏南大叔:如何使用mysqlimport命令,导入结构化数据? - mysqlimport-command
如何使用mysqlimport命令,导入结构化数据?(图3-3)

参数描述

这里就重点描述以下注意事项:

-p

这个是密码,如果不担心密码明文泄漏的话,可以在后面直接带上密码,中间没有空格,可以避免再手动输入一次密码了。不过您可能会收到下面类似的警告信息。

mysqlimport: [Warning] Using a password on the command line interface can be insecure.

--local

这个选项,意思是说,文件来源可以是任何位置,而不是某个特定目录。新手似乎很难理解这个选项,不过,苏南大叔建议您可以参考下面一篇文章。。。。。(文章发现还没写.....)

--fields-terminated-by

这个选项是可有可无的,因为默认的情况下,要导入的数据是用制表符\t来分割的,也就是tab键。不过,你也可以换成别的分隔符,比如:|

--fields-terminated-by='|'
注意单引号的存在:'|'

相关链接

总结

mysqlimport命令,看起来不错。使用起来,苏南大叔是不太喜欢。所以,估计以后使用这个命令的机会很少吧...更多mysql相关文章,请点击苏南大叔的博客:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

 【源码】本文代码片段及相关软件,请点此获取

 【绝密】秘籍文章入口,仅传授于有缘之人   mysql

本站的忠实读者小伙伴,正在阅读下面这些文章: