load data導txt文件進mysql中的數據


 

1、實驗內容:

    利用SQL語句“load data ”將“.txt”文本文件中的數據導入到mysql中

2、實驗過程:

     首先我創了一個txt(也可以是其他的),設置其編碼為utf-8,在windows下默認編碼是ANSI。

      設置方法,打開一個空txt文件,點擊另存,編碼顯示是ANSI,換成UTF-8

1 張三 31 北京 3000
2 李四 25 杭州 4000
3 王五 45 上海 4500
4 小明 29 天津 2331  

    假設以上就是一個txt文件中的內容(文件名叫pid.txt,在E盤中)

    根據這個表中的內容創建一個表:

1 mysql> create table per1(
2     -> name varchar(20),
3     -> age int,
4     -> city varchar(20),
5     -> salary int
6     -> );
7 Query OK, 0 rows affected (0.64 sec)

 然后導入數據,當然,有很大幾率會出錯:因為你很有可能遇上

mysql secure_file_priv 文件讀寫問題(這是一個關於能否允許導入或者導出mysql與外界的設置)

 1 mysql> load data infile "E:\vs\ppid.txt"
 2     ->  into table per(name,age,city,salary);
 3 ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
 4 mysql> show variables like '%secure%';
 5 +--------------------------+-------+
 6 | Variable_name            | Value |
 7 +--------------------------+-------+
 8 | require_secure_transport | OFF   |
 9 | secure_file_priv         | NULL  |
10 +--------------------------+-------+
11 2 rows in set, 1 warning (0.01 sec)

我的secure_file_priv為空,說明不允許導入導出數據,需要在my.ini中修改secure_file_priv的值,一般會沒有secure_file_priv,所以為了安全認為secure_file_priv為不允許,手動添加secure_file_priv

 1 secure_file_priv = '莫目錄名' #只允許在這個目錄里做事    
2 secure_file_priv = #這里不寫 表示任意一個路都可以導入導出
3 secure_file_priv = NULL #不允許導入導出,啥都不許干。
#綜上所訴,我選擇 secure_file_priv =

      由上圖可看出一開始我也寫了一個目錄,后來把路徑給注釋掉了。

     下方有 # 號往后的一些配置在此截圖的上方已經配置好了,為了某個時候可能需要 就將只其注釋掉,而不是刪去。

   ( ps:改完my.ini內容過后要重啟mysql。net stop mysql , net start mysql ,而不是關掉命令行界面)

     言歸正傳,開始干正事了。。。

這是一個更改后的utf-8的txt文件

先登陸

選擇一個庫,不然呆會兒在那個庫中工作都不知道,它會報錯。

 然后導入,導入,當然,不可避免出錯了,顯示錯位,並且還將”4  小明  29  天津   2331“這一行數據給了name屬性!!

 

age,city屬性是這模樣。

 加上LINES TERMINATED BY '\r\n'  添加了兩次,還是都在name里面去了,不過貌似順眼了一點點。

 

  添加 FIELDS TERMINATED BY '   '  LINES TERMINATED BY '\r\n'; 

‘  ’ 意思是空格為界分開,\r\n回車符換行符表示一行了,找下一行數據。

 

 到此才算導入結束。不過,張三你咋這么突出??還不走尋常路。

 

 

查詢過后,這是關於二進制某不可讀字符的問題。

附上類似的問題解決方案,這是鏈接

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM