mysql中load data Infile運用,mysqlinfile

來源:互聯網
上載者:User

mysql中load data Infile運用,mysqlinfile
速度比insert要快20倍。共用一下java程式操作。

package com.mysql.csv;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;public class Competition { static Connection  conn = null;     static String driver = "com.mysql.jdbc.Driver";     static String url = "jdbc:mysql://127.0.0.1:3306/nerd_1";      public static void main(String[] args) throws ClassNotFoundException, SQLException {     Class.forName(driver);         conn =  DriverManager.getConnection(url, "root", "1234");         String sql = "LOAD DATA INFILE 'E://baidu//cp9.csv' REPLACE INTO TABLE baidu_34000_0_competition CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' ignore 1 lines";         PreparedStatement  pstmt = conn.prepareStatement(sql);     pstmt.execute();       conn.close(); } }
批量插入需要條件具體可參考文檔:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html#load-data
mysql中load data infile的使用方法????????????????????????

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[FIELDS
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char' ]
]
[LINES
[STARTING BY 'string']
[TERMINATED BY 'string']
]
[IGNORE number LINES]
[(col_name_or_user_var,...)]
[SET col_name = expr,...]]
 
Mysql load data infile 效率問題

其實你的這個問題是mysql中的一個核心問題,既mysql資料的備份和恢複
你可以使用三種方式
1.使用sql語句匯入匯出
2.使用mysqldump 和mysqlimport 工具
3.直接copy 資料檔案 既冷備份
你說說的詳細,就給積分,那我就說詳細些

一.使用sql陳述式完成mysql的備份和恢複

你可以使用SELECT INTO OUTFILE語句備份資料,並用LOAD DATA INFILE語句恢複資料。這種方法只能匯出資料的內容,不包括表的結構,如果表的結構檔案損壞,你必須要先恢複原來的表的結構。
文法:
SELECT * INTO 'file_name' FROM tbl_name
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE]
INTO TABLE tbl_name
SELECT ... INTO OUTFILE 'file_name'格式的SELECT語句將選擇的行寫入一個檔案。檔案在伺服器主機上被建立,並且不能是已經存在的(不管別的,這可阻止資料庫表和檔案例如“/etc/passwd”被破壞)。SELECT ... INTO OUTFILE是LOAD DATA INFILE逆操作。
LOAD DATA INFILE語句從一個文字檔中以很高的速度讀入一個表中。如果指定LOCAL關鍵詞,從客戶主機讀檔案。如果LOCAL沒指定,檔案必須位於伺服器上。(LOCAL在MySQL3.22.6或以後版本中可用。)
為了安全原因,當讀取位於伺服器上的文字檔時,檔案必須處於資料庫目錄或可被所有人讀取。另外,為了對伺服器上檔案使用LOAD DATA INFILE,在伺服器主機上你必須有file的許可權。使用這種SELECT INTO OUTFILE語句,在伺服器主機上你必須有FILE許可權。
為了避免重複記錄,在表中你需要一個PRIMARY KEY或UNIQUE索引。當在唯一索引值上一個新記錄與一個老記錄重複時,REPLACE關鍵詞使得老記錄用一個新記錄替代。如果你指定IGNORE,跳過有唯一索引的現有行的重複行的輸入。如果你不指定任何一個選項,當找到重複索引值時,出現一個錯誤,並且文字檔的餘下部分被忽略時。
如果你指定關鍵詞LOW_PRIORITY,LOAD DATA語句的執行被延遲到沒有其他客戶讀取表後。
使用LOCAL將比讓伺服器直接存取檔案慢些,因為檔案的內容必須從客戶主機傳送到伺服器主機。在另一方面,你不需要file許可權裝載本地檔案。如果你使用LOCAL關鍵詞從一個本地檔案裝載資料,伺服器沒有辦法在操作的當中停止檔案的傳輸,因此預設的行為好像IGNORE被指定一樣。
當在伺服器主機上尋找檔案時,伺服器使用下列規則:
 如果給出一個絕對路徑名,伺服器使用該路徑名。
 如果給出一個有一個或多個前置組件的相對路徑名,伺服器相對伺服器的資料目錄搜尋檔案。
 如果給出一個沒有前置組件的一個檔案名稱,伺服器在當前資料庫的資料庫目錄尋找檔案。
假定表tbl_name具有一個PRIMARY KEY或UNIQUE索引,備份一個資料表的過程如下:
1、鎖定資料表,避免在備份過程中,表被更新
mysql>LOCK TABLES READ tbl_name;
關於表的鎖定的詳細資料,將在下一章介紹。
2、匯出資料
mysql&g......餘下全文>>
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.