首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL LOAD DATA INFILE 高效批量導入:效能優勢與 Java 整合實戰

     編輯:MySQL 綜合教學

MySQL LOAD DATA INFILE 高效批量導入實戰

效能優勢

速度比 INSERT 快 20 倍以上,適用於百萬級以上資料匯入場景。

核心語法

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;

參數詳解

子句說明
REPLACE / IGNORE主鍵/唯一鍵衝突處理:REPLACE 覆蓋,IGNORE 跳過
CHARACTER SET指定檔案編碼 (utf8/gbk/latin1 等)
FIELDS TERMINATED BY欄位分隔符 (預設 \t)
ENCLOSED BY欄位包裹字元 (如 CSV 雙引號)
LINES TERMINATED BY行結束符 (\n / \r\n)
IGNORE 1 LINES跳過標題行
LOCAL客戶端讀取檔案傳送給 Server (需啟用 local_infile)

Java JDBC 整合範例

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();
    }
}

關鍵前置條件與坑點

  1. secure_file_priv:MySQL 5.6+ 限制匯入目錄
    SHOW VARIABLES LIKE 'secure_file_priv';
    -- 結果為 NULL 表示禁用,需配置 my.cnf: secure_file_priv = '' 並重啟
  2. 檔案權限:Server 進程需有檔案讀取權限 (非 LOCAL 模式)
  3. LOCAL 模式:加上 LOCAL 關鍵字由 Client 讀取檔案,需 JDBC 連線參數 allowLoadLocalInfile=true
  4. max_allowed_packet:大檔案需調大此參數

官方文件參考

MySQL 5.1 LOAD DATA INFILE 官方語法文件

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved