1. 導入
(前提是已創建CSV_DB.TBL_NAME的表)
LOAD DATA INFILE '/home/download/test.csv' INTO TABLE CSV_DB.TBL_NAME FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
常用參數:
- FIELDS TERMINATED BY ‘,’:指定字段分隔符
- OPTIONALLY ENCLOSED BY ‘"’:認爲雙引號中的是一個獨立的字段。Excel 轉 CSV 時,有特殊字符(逗號、頓號等)的字段,會自動用雙引號引起來
- LINES TERMINATED BY ‘\n’:指定行分隔符,注意,在 Windows 平臺上創建的文件,分隔符是 ‘\r\n’
如果需要導入一個列數很多的表,手動創建表會很麻煩。可以使用phpMyAdmin輔助導入/導出。
2. 導出
SELECT … INTO 語法可以將查詢結果保存到變量或文件中:
- SELECT … INTO var_list # 將字段的值保存到變量中
- SELECT … INTO OUTFILE # 將選中的行保存到文件中。可以指定列和行的結束符,以生成指定格式的文件。
- SELECT … INTO DUMPFILE # 將一個單獨的行寫入文件中,沒有格式
mysql > SELECT a,b,a+b INTO OUTFILE '/home/download/test.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;
mysql> SELECT * INTO OUTFILE '/home/download/test.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM TBL_NAME;
Query OK, 21000 rows affected (2.01 sec)
常用參數(跟 LOAD DATA INFILE 語法一樣):
- FIELDS TERMINATED BY ‘,’:指定字段分隔符
- OPTIONALLY ENCLOSED BY ‘"’:認爲雙引號中的是一個獨立的字段。Excel 轉 CSV 時,有特殊字符(逗號、頓號等)的字段,會自動用雙引號引起來
- LINES TERMINATED BY ‘\n’:指定行分隔符,注意,在 Windows 平臺上創建的文件,分隔符是 ‘\r\n’
3. 注意事項
- Windows平臺csv文件編碼:
1)win下保存的csv文件注意要手動轉至utf-8編碼。
Excel 另存爲 CSV 文件後,默認編碼是“使用 UTF-8 BOM 編碼”,在 Notepad++ 中打開文件,選擇“使用 UTF-8 編碼”保存即可清除 BOM 頭:
2)數據正常,但無法導入數據,可嘗試去除csv頭(第一行title)
- Show fail “ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement”
這是由於上傳或下載的文件沒有在 MySQL 指定的安全目錄中, 或者安全目錄根本沒有開啓。
使用以下命令查看安全目錄狀態:
SHOW VARIABLES LIKE "secure_file_priv";
mysql> SHOW VARIABLES LIKE “secure_file_priv”;
±-------------------------±----------------------+
| Variable_name | Value |
±-------------------------±----------------------+
| require_secure_transport | OFF |
| secure_auth | ON |
| secure_file_priv | /var/lib/mysql-files/ |
±-------------------------±----------------------+
3 rows in set (0.00 sec)“””
解決辦法:
1)在 /etc/my.cnf 配置文件(Windows 平臺下是 my.ini)中添加:
secure_file_priv =
“=” 後值爲空,意爲無限制,你可以使用任意目錄
2)在 /etc/my.cnf 配置文件(Windows 平臺下是 my.ini)中添加:
secure_file_priv = <#your safe dir#>
“=” 後指定安全目錄。推薦使用這種方式。