国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

ubuntu中mysql使用load data導入數據

2024-07-24 12:38:02
字體:
來源:轉載
供稿:網友

剛裝的ubuntu,裝好mysql后想用load data infile命令導入數據到表中,產生下面錯誤”ERROR 29 (HY000):File ‘/home/bioinformation/Downloads/data.txt’ not found (Errcode: 13)”,

然后查了一下load data語法:

  1. LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'  
  2. [REPLACE | IGNORE]  
  3. INTO TABLE tbl_name  
  4. [FIELDS  
  5. [TERMINATED BY 'string']  
  6. [[OPTIONALLY] ENCLOSED BY 'char']  
  7. [ESCAPED BY 'char' ]  
  8. ]  
  9. [LINES  
  10. [STARTING BY 'string']  
  11. [TERMINATED BY 'string']  
  12. ]  
  13. [IGNORE number LINES]  
  14. [(col_name_or_user_var,...)]  
  15. [SET col_name = expr,...]] 

LOAD DATA INFILE 語句以很高的速度從一個文本文件中讀取行到一個表中,文件名必須是一個文字字符串.

發現沒有問題,這時我就眾權限來入手了將mysql用戶改為”root”后還是不行,后來上網查了一下,要么不知所云,要么是覺得方法太復雜,而是想,這個錯誤的意思是找不到文件,那把這個文件復制到mysql數據庫所在的文件不就行了,在安裝mysql的時候沒有注意,不知道mysql安裝在哪里,如是想與其自己找,不如讓它自己告訴我,而是load時用了個相對路徑,代碼如下:

”load data infile ‘data.txt’ into table table_name”,

果然mysql報錯時就顯示了” Can’t get stat of ‘/var/lib/mysql/test/data.txt’ (Errcode: 2)”,而是用“/home/bioinformation/Downloads/data.txt”復制為“/var/lib/mysql/test/data.txt”,結果發現用戶沒有權限,果斷用”sudo su”切換到root用戶,OK后,再運行,代碼如下:

”load data infile ‘data.txt”

果然成功了,顯示“Query OK,……”,再將用戶切換到正常用戶就行了,現總結如下,很簡單,先用root用戶將用戶復制到mysql數據庫所在文件夾,運用相對路徑“load data infile ‘data.txt’ into table table_name”就可以了.

如何提高mysql load data infile的速度

測試數據2.5G,共有數據9427567條,用的mysql的large服務器的配置.

load一次需要大概10分鐘左右.

建的表用的是MYISAM,調整了幾個session的參數值,代碼如下:

SET SESSION BULK_INSERT_BUFFER_SIZE=256217728;

SET SESSION MYISAM_SORT_BUFFER_SIZE=256217728;

運行結果如下:

Query OK, 9427567 rows affected, 1558 warnings (3 min 55.21 sec)

Records: 9427567 Deleted: 0 Skipped: 0 Warnings: 0

google到的還可以,代碼如下:

set global KEY_BUFFER_SIZE=256217728;

alter table tablename disable keys;

如何load不同編碼的數據

原來用的4.X的mysql,我是select INTO OUTFILE,只后用iconv,或者其他軟件來做。可以參考這里,但是由于這次數據大,用ultraedit等軟件打開都要半天,好在新版的mysql可以增加一個新的參數:CHARACTER SET gbk

我的文本數據是GBK的編碼,數據表是utf8的,用這種方法測試成功.

如何load的時候只insert特定的列

比如表里面有比元數據多的列,可以在load的時候指定要插入的字段名字,示例的代碼如下:

  1. LOAD DATA INFILE '~/data.txt'    
  2. INTO TABLE fb0505   --Vevb.com 
  3. CHARACTER SET  gbk    
  4. FIELDS TERMINATED BY 't' ENCLOSED BY '' ESCAPED BY ''  
  5. LINES TERMINATED BY 'n' STARTING BY ''   
  6. (seller_id,fb_type,fb_date,item_url); 

其中表fb0505里面還有一列是id.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黑水县| 永清县| 鞍山市| 永川市| 东光县| 鹤壁市| 东丰县| 盐边县| 德化县| 玉林市| 东海县| 新平| 玛曲县| 怀集县| 泰顺县| 理塘县| 手机| 泰兴市| 犍为县| 昂仁县| 台中县| 托克托县| 电白县| 修水县| 隆回县| 民权县| 兖州市| 临武县| 汤原县| 巍山| 望江县| 保德县| 永川市| 咸阳市| 靖江市| 巴林左旗| 宝坻区| 北票市| 桦川县| 青河县| 中西区|