今天在导入测试服务器导入txt数据的时候,提示报错:ERROR 1148 (42000): The used command is not allowed with this MySQL version
我的系统是ubuntu系统,安装mysql使用的是apt-get install方式安装的,之所以出现这个报错是在安装的时候没有指定enable-local-infile,所以无法在mysql命令行下导入。具体解决方法可以重新编译安装或者使用如下方法导入:
在mysql命令行下,查看表信息:
mysql> describe ct; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | name | varchar(20) | YES | | NULL | | | age | int(11) | YES | | NULL | | | chengshi | varchar(20) | YES | | NULL | | | gongzi | int(11) | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 4 rows in set (0.00 sec)
退出mysql命令行界面,查看我们的txt文件
root@addam-python:~# cat xinxi.txt zhangsan 20 beijing 3000 lisi 31 shanghai 4000 huhansan 28 beijng 10000 baishe 33 chongqing 5000 fahai 60 leifengta 100
这里要注意中间使用tab分割,如果有空值,请使用\N代替
下面在shell中使用如下命令导入数据
root@addam-python:~# mysql -uroot -p test --local-infile=1 -e 'load data local infile "/root/xinxi.txt" into table ct(name,age,chengshi,gongzi)'
说明:mysql -uroot -p这就不用说了吧
-p 制定我们的表所在库
--local-infile=1
使用local-infile模块
load data local infile "/root/xinxi.txt"
从/root的xinxi.txt中导入数据
into table ct(name,age,chengshi,gongzi)
导入到ct表中
现在我们再进入mysql命令行查看我们的表,是否内容已经导入
mysql> select * from ct; +----------+------+-----------+--------+ | name | age | chengshi | gongzi | +----------+------+-----------+--------+ | zhangsan | 20 | beijing | 3000 | | lisi | 31 | shanghai | 4000 | | huhansan | 28 | beijng | 10000 | | baishe | 33 | chongqing | 5000 | | fahai | 60 | leifengta | 100 | +----------+------+-----------+--------+ 5 rows in set (0.00 sec)
好吧,现在我们看到txt的数据已经按着我们所希望的导入到指定表中。