天天看點

mysql兩條記錄合成一條資料_踩坑記錄之csv資料導入MySQL

可能采坑的操作

  1. 将excel表格轉換成csv 逗号分隔,然後notepad檢查檔案是否是utf8編碼,儲存。
    mysql兩條記錄合成一條資料_踩坑記錄之csv資料導入MySQL
  2. 打開 phpMyAdmin , 選擇要導入的表格,然後點選導入;
    mysql兩條記錄合成一條資料_踩坑記錄之csv資料導入MySQL
    導入設定
  3. 點選執行之後,可能會等很久很久很久。。。。取決于資料量的大小,如果等了很久還沒導入成功或者導入失敗,亦或者資料導入一半就中斷。。。那麼可能要注意以下幾點
  • phpMyAdmin 是用php寫的,是以需要注意php逾時的問題,資料量太大,超過了逾時值 ,那麼導入腳本會停止,導緻資料導入中斷。将php逾時設為合适的大小即可。
  • PHP逾時參數設定了,csv檔案格式也沒有問題。。那可能是網絡的問題。。或者其他我不知道的原因,導緻資料傳到一半就502(我今天就是)。。。sad
  • 換一個導入姿勢
    mysql兩條記錄合成一條資料_踩坑記錄之csv資料導入MySQL
    令人難過的提示

進階操作

  • 因為之前一直用的上一種操作将資料導入MySQL,是以這次出了問題,就一直死磕。。。結果白白浪費了一堆時間,有時候一條路走不通的時候,還是需要想想其他辦法
    mysql兩條記錄合成一條資料_踩坑記錄之csv資料導入MySQL
将csv檔案上傳到伺服器,然後MySQL本地導入
  1. 将整理好的 csv檔案(逗号分隔),上傳到 /tmp/ 目錄下  ,因為mysql預設使用了 /tmp 作為臨時讀寫目錄。否則可能會報沒有權限之類的錯誤。
  2. 使用這條語句

    show variables like '%secure%';

    查詢mysql檔案的導入和導出路徑是否有預設的路徑設定,或者是預設不允許導入導出
  3. 導入語句,其中 csv 裡面的列數要和表裡面的一一對應;csv檔案必須是檔案的絕對路徑;FIELDS TERMINATED BY: 指定分隔符;LINES TERMINATED BY: 指定換行符
    LOAD DATA INFILE '/tmp/longan.posAnno.csv' INTO TABLE longan_GeneSearch_GenePosAnno FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
               
  1. 如果出現報錯:

    The MySQL server is running with the –secure-file-priv option so it cannot execute this statement

    ,則使用這條語句

    show variables like '%secure%';

    查詢mysql檔案的導入和導出路徑是否有預設的路徑設定,或者是預設不允許導入導出。
secure-file-priv的值有三種情況:
secure_file_prive=null ––限制 mysql 不允許導入導出
secure_file_priv=/path/ – –限制 mysql 的導入導出隻能發生在預設的/path/目錄下
secure_file_priv=’’ – –不對 mysql 的導入和導出做限制
           
  • 打開MySQL的配置檔案 my.cnf :

    vim /etc/my.cnf

  • 在該檔案中添加一行内容:

    secure_file_priv =

  • 重新開機 MySQL,然後檢視

    show variables like '%secure%';

     顯示如下圖即可正常導入資料。
mysql兩條記錄合成一條資料_踩坑記錄之csv資料導入MySQL

寫在最後

我是愛狗子的老饕,

轉眼就研三,過去的這兩年在各位大佬的照顧下,學到了不少東西,感謝。

一條路走不通的時候,要學會放過自己,換條路也許會更好,讀研讀博亦是如此,有些東西确實犯不着,最最最最最重要的當然是開心啦!  哈哈哈

PS:本文為師弟(海南道明寺)投稿,單身~ 具體不清楚他畢業去向,對他感興趣的可留言。