首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Oracle 批量插入多筆資料:程式碼批次與 Notepad++ 欄位編輯法

     編輯:程式設計綜合問答

情境

需將多個用戶名(以分號分隔)對應同一則訊息,批次寫入資料庫。

方案一:程式碼端批次處理(推薦)

// Java 範例
String input = "user1;user2;user3";
String[] users = input.split(";");
String sql = "INSERT INTO messages (username, content, create_time) VALUES (?, ?, ?)";

try (Connection conn = dataSource.getConnection();
     PreparedStatement ps = conn.prepareStatement(sql)) {
    conn.setAutoCommit(false);
    for (String user : users) {
        ps.setString(1, user.trim());
        ps.setString(2, "測試訊息");
        ps.setLong(3, System.currentTimeMillis());
        ps.addBatch();
    }
    ps.executeBatch();
    conn.commit();
}

優點:效能高、防注入、可控制事務。

方案二:Notepad++ 欄位模式快速產生 SQL(臨時/一次性任務)

  1. 開啟 Notepad++,貼上基礎 SQL:
    `INSERT INTO msg (user, content, time) VALUES ('', '測試', '1448519951050');`
  2. 另開分頁,將用戶名逐行貼上(每行一個)。
  3. 按住 `Alt` + 滑鼠左鍵拖曳(或 `Alt+Shift+方向鍵`)進入欄位模式,選取所有用戶名。
  4. `Ctrl+C` 複製。
  5. 回到 SQL 分頁,將游標置於 `VALUES ('` 之後,`Ctrl+V` 貼上,用戶名會自動對齊填入每行。
  6. 複製全部 SQL,貼入資料庫工具執行。

方案三:Oracle 專用 `INSERT ALL`

INSERT ALL
  INTO msg (user, content, time) VALUES ('user1', '測試', 1448519951050)
  INTO msg (user, content, time) VALUES ('user2', '測試', 1448519951050)
  INTO msg (user, content, time) VALUES ('user3', '測試', 1448519951050)
SELECT * FROM dual;

選擇建議

  • 常態性業務 → 方案一(程式碼批次)。
  • 一次性資料修補 → 方案二(Notepad++)或方案三(INSERT ALL)。

注意事項

  • 大量資料建議分批次提交(每 1000~5000 筆 commit 一次),避免 Undo 表空間暴增。
  • 若用戶名含單引號,務必轉義或使用參數化繫結。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved