方法一:mysql內執行
進入DB內,執行SQL導出成CSV檔。
此案例是進入DB:testcsv 需要導出的table:newjbo (只需改紅色部份)
/tmp/newjbo.csv是要存放的路徑
/tmp/newjbo.csv是要存放的路徑
執行SQL
mysql> use testcsv
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> SELECT * INTO OUTFILE '/tmp/newjbo.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' FROM newjbo;
Query OK, 46 rows affected (0.02 sec)
可能會出現的問題
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
secure-file-priv參數是用來限制LOAD DATA, SELECT ... OUTFILE, and LOAD_FILE()傳到哪個指定目錄的。
- ure_file_priv的值為null ,表示限制mysql 不允許導入|導出
- 當secure_file_priv的值為/tmp/ ,表示限制mysql 的導入|導出只能發生在/tmp/目錄下
- 當secure_file_priv的值沒有具體值時,表示不對mysql 的導入|導出做限制
mysql> show global variables like '%secure%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| require_secure_transport | OFF |
| secure_auth | ON |
| secure_file_priv | NULL |
+--------------------------+-------+
3 rows in set (0.07 sec)
此開關默認為NULL,即不允許導入導出。
故修改my.cnf設定重啟後即可導出,在[mysqld]內加入,路徑沒限制就可打"/" 若有限制就看自己要放在哪寫入完整路徑。
故修改my.cnf設定重啟後即可導出,在[mysqld]內加入,路徑沒限制就可打"/" 若有限制就看自己要放在哪寫入完整路徑。
[mysqld]
secure_file_priv ="/"
secure_file_priv ="/"
加入後重啟DB,再次進入MYSQL內重新執行SQL,即可導出CSV檔
方法二:LINUX下執行
在LINUX下直接導出
只需修改紅色部份,第一個是語法,第二個是要存放的路徑
在LINUX下直接導出
只需修改紅色部份,第一個是語法,第二個是要存放的路徑
mysql -uroot -p --default-character-set=gbk -e "select * from testcsv.newjob" | sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g' > testcsv.newjob.csv
沒有留言:
張貼留言