使用如下語句導入數據php
LOAD DATA INFILE '/home/jason/st_stock.txt' INTO TABLE st_stock FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"';
一開始覺得是沒把文件放在mysql的臨時目錄下,因而使用如下命令查看mysql的臨時目錄html
mysql> show variables like '%tmpdir%'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | slave_load_tmpdir | /tmp | | tmpdir | /tmp | +-------------------+-------+
把文件放到/tmp目錄下,再執行如下語句mysql
LOAD DATA INFILE '/tmp/st_stock.txt' INTO TABLE st_stock FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"';
此次報錯sql
ERROR 29 (HY000): File '/tmp/st_stock.txt' not found (Errcode: 13)
在晚上搜索發現這篇文章:www.phpddt.com/db/mysql-error-29.html
vim
執行如下命令app
sudo vim /etc/apparmor.d/usr.sbin.mysqld
在usr.sbin.mysqld文件把tmp目錄加加上,以下:code
/usr/sbin/mysqld { ...... /etc/mysql/*.pem r, /etc/mysql/conf.d/ r, /etc/mysql/conf.d/* r, /etc/mysql/*.cnf r, /usr/lib/mysql/plugin/ r, /usr/lib/mysql/plugin/*.so* mr, /usr/sbin/mysqld mr, /usr/share/mysql/** r, /var/log/mysql.log rw, /var/log/mysql.err rw, /var/lib/mysql/ r, /var/lib/mysql/** rwk, /var/log/mysql/ r, /var/log/mysql/* rw, /var/run/mysqld/mysqld.pid rw, /var/run/mysqld/mysqld.sock w, /run/mysqld/mysqld.pid rw, /run/mysqld/mysqld.sock w, /sys/devices/system/cpu/ r, /tmp/r, /tmp/* rw, .... }
重啓服務:htm
sudo /etc/init.d/apparmor reload
再執行語句ip
LOAD DATA INFILE '/tmp/st_stock.txt' INTO TABLE st_stock FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'; Query OK, 2088 rows affected (0.09 sec) Records: 2088 Deleted: 0 Skipped: 0 Warnings: 0
成功,並且貌似很快
get