更多內容請訪問 www.uusystem.com
在MySQL中,它自己就能導出CSV文件 ,只不過是有如下幾個問題需要大家解決。
一、 生成文件不成功,沒有讀寫權限
1.關聯mysql權限
(1).修改msql配置文件,my.ini中增加 secure_file_priv =""
(2).用root賬戶登陸mysql,執行grant file on *.* to dzwl_u1;
備注:secure_file_priv =""代表導出指定目錄為隨意目錄。grant file on *.* to dzwl_u1; 給Mysql中用戶dzwl_u1關聯導出文件操作權限。
2.如果使用 select ... into outfile ...方式導出數據,需要分為兩種情況 :
(1). windows系統下:可以隨意指定對應的目錄 。
(2). linux 系統下 :
A.不指定目錄 ,默認在當前導出數據庫數據目錄下 ,例如 /var/lib/mysql/db_name
B. 指定目錄時,默認只能指定 /tmp目錄 。否則回報 “ ERROR 1 (HY000) at line 1: Can't create/write to file '/xxxx/xxxx/xxx.csv' (Errcode: 13)” 錯誤 !導致原因是因為權限問題,修改起來比較麻煩 !可以放到/tmp/目錄下,然后cp到其它你想存放的目錄。【推薦使用這種方法】
二、導出數據為中文亂碼
1.數據庫表一般是utf8編碼,excel默認編碼格式是GBK,excel直接打開時候是一堆亂碼。可以先保存成為txt格式,excel打開txt時候會提示選擇用哪種編碼方式打開,選擇utf8解決。
2.導出時候加上CHARACTER SET gbk 即可【推薦使用】
三、數據沒有格式化,閱讀不方便
關於數據格式化的問題,需要給導出的字段傳遞一些參數
1 fields terminated by ',' optionally enclosed by '"' escaped by '"'
2 lines terminated by '\r\n'
這個參數是根據RFC4180文檔設置的,該文檔全稱Common Format and MIME Type for Comma-Separated Values (CSV) Files,其中詳細描述了CSV格式,其要點包括:
(1)字段之間以逗號分隔,數據行之間以\r\n分隔;
(2)字符串以半角雙引號包圍,字符串本身的雙引號用兩個雙引號表示。
terminated by分隔符:意思是以什么字符作為分隔符
escaped by轉義字符
enclosed by描述的是字段的括起字符。
escaped by描述的轉義字符。默認的是反斜杠(backslash:\ )
SELECT CREATEUSERID, BLACKID, BLACKNAME, DID, DEVICEID, ALARMTYPE, IMSI, IMEI, DEVICENAME, DEVICETYPE, DATATIME FROM ( SELECT T1.CREATEUSERID AS CREATEUSERID, T0.BLACKID AS BLACKID, T1.BLACKNAME AS BLACKNAME, T0.DID AS DID, T2.DEVICEID AS DEVICEID, T1.ALARMTYPE AS ALARMTYPE, T1.IMSI AS IMSI, T1.IMEI AS IMEI, T2.DEVICENAME AS DEVICENAME, T2.DEVICETYPE AS DEVICETYPE, T0.DATATIME AS DATATIME FROM T_DEFS_BLACK_WARN T0 LEFT JOIN T_DEFS_BLACK_INFO T1 ON T0.BLACKID = T1.BLACKID LEFT JOIN T_DEFS_DEVICE_INFO T2 ON T0.DID = T2.DID WHERE T1.ALARMTYPE = 1 AND T1.CREATEUSERID = 2 UNION SELECT '創建者ID', '黑名單ID', '黑名單名字', '設備自增ID', '設備ID', '告警類型', 'IMSI', 'IMEI', '設備名字', '設備類型', '黑名單上線時間', '黑名單上線地點' ) m ORDER BY m.BLACKID DESC INTO OUTFILE 'c://blackListAlarm.csv' CHARACTER SET gbk FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\r\n';