使用mysql處理文件導入導出如下
#導出文件
SELECT * FROM MY_TABLE INTO OUTFILE 'FILE_PATH';
#導入文件
LOAD DATA INFILE 'FILE_PATH' INTO TABLE MY_TABLE;
一般情況下會遇到如下問題
The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
在此記錄解決辦法,以便以后查閱(主要參考How should I tackle --secure-file-priv in MySQL?)
- Move your file to the directory specified by secure-file-priv
- Disable secure-file-priv: This must be removed from startup and cannot be modified dynamically. To do this check your MySQL start up parameters (depending on platform) and my.ini.
方法1. 把導入導出的文件存放到 secure-file-priv 路徑下即可
非常詳細的方法2步驟(親測可行):
- Stop the MySQL server service by going into services.msc
- Go to C:\ProgramData\MySQL\MySQL Server 5.6 (ProgramData was a hidden folder in my case).
- Open the my.ini file in Notepad.
- Search for 'secure-file-priv'.
- Comment the line out by adding '#' at the start of the line.
- Save the file.
- Start the MySQL server service by going into services.msc
附1:
#更詳細的導出文件
SELECT * FROM MY_TABLE
INTO OUTFILE 'FILE_PATH'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
#更詳細的導入文件
LOAD DATA INFILE 'FILE_PATH'
INTO TABLE MY_TABLE
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';
附2:
解決導出csv中文亂碼問題(親測可行):將csv用txt打開,另存為,選擇utf8編碼即可
解決導入中文亂碼問題(未測):mysql安裝目錄下的my.ini(參考上面),增加如下參數:
[client]
default-character-set=utf8
[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
同理,你也需要將你要導入的csv用上面提到的方法另存為utf8編碼
事實上我把csv編碼改為utf8后用如下方法導入并沒有遇到中文亂碼的問題(同時記錄一下當導入字段中有自增字段該如何處理:How to LOAD DATA INFILE in mysql with first col being Auto Increment?)
#其中id為自增的primary key
LOAD DATA INFILE 'train_utf8.csv'
INTO TABLE train
FIELDS TERMINATED BY ','
(province, station, station_code)
SET id = NULL;
導出所有數據
C:\Program Files\MySQL\MySQL Server 5.7\bin>mysqldump -h ipAddress -u userName -p DBName > fileName