如何使用mysqlimport命令,导入结构化数据?
发布于 作者:苏南大叔 来源:程序如此灵动~ 我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...
苏南大叔在本篇文章中,描述一个比较常见的mysql
的数据导入命令mysqlimport
。安装过mysql
的系统里面,一般都会有这个命令。这个命令和传统的mysql
里面的source
命令是不同的,具体哪里不同。可以参考本文中的描述。在网上人云亦云的文章里面,这个mysqlimport
命令是被很大误解的。
凡事大家都自己亲自试试,苏南大叔的理解也不一定对。但是苏南大叔可以肯定的是:本文中的坑,网上很多教程都没说。
基本概念
本文的例子中,mysql
有个表叫做xmm
,它有a
、b
、c
三个数据库。本文的操作对象,并不是sql
文件,而且结构化的文本文件,类似于大家以前常见的.csv
文件。
注意:导入的文件名(不包含后缀),和数据库里面的表名是一一对应的。这点非常非常重要,意思是这个命令根本不管表结构的事情,仅仅负责表数据! 并且要导入的数据的文件名,是有特殊要求的。
注意:默认的分隔符是制表符(截图上表现为一个灰色的右箭头),可以用命令参数--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
后面的数字,就是导入失败的数据条数。
参数描述
这里就重点描述以下注意事项:
-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
相关文章,请点击苏南大叔的博客:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。