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

MySQL 批量插入規律資料實戰技巧

     編輯:MySQL 綜合教學

利用 INSERT ... SELECT 搭配字串函數與關聯查詢,可一次性根據現有資料產生大量規律性新資料,避免程式迴圈寫入。

實戰範例

INSERT INTO CPPRADAR(
  SITEID, RADARNAME, RADARDESC, PARENTID,
  RADARTYPE, RADARQUERY, RADARCONFIG, CRUSER, CRTIME, OPERUSER, OPERTIME, LEAF
)
SELECT 
  001,
  REPLACE(a.RADARNAME, '互動', '部落格') AS radarname,
  '部落格',
  a.RADARID,
  3,
  SUBSTR(b.RADARQUERY, 6, 6),
  '條件',
  'admin',
  CURDATE(),
  'admin',
  CURDATE(),
  1
FROM 
  (SELECT * FROM CPPRADAR WHERE RADARDESC = '互動') a
  INNER JOIN
  (SELECT * FROM CPPRADAR WHERE RADARDESC = '新聞' AND STATUS = 0) b
  ON a.PARENTID = b.PARENTID;

技巧解析

  1. 子查詢別名:a、b 分別代表不同條件的資料集。
  2. 字串轉換:REPLACE 批量修改名稱關鍵字。
  3. 欄位截取:SUBSTR(b.RADARQUERY, 6, 6) 從第 6 字元取 6 碼。
  4. 固定值注入:3、'條件'、'admin' 等直接帶入。
  5. 日期函數:CURDATE() 自動帶入執行當日。
  6. 關聯條件:ON a.PARENTID = b.PARENTID 確保父層一致。

效能優化建議

  • 大量資料(>10 萬筆)建議分批執行,避免長鎖定與 Binlog 膨脹。
  • 確保關聯欄位(PARENTID、RADARDESC、STATUS)有索引。
  • 使用 SET autocommit=0; 手動控制交易提交,最後 COMMIT;。
  • 若目標表有觸發器,考慮暫停或改用載入工具(LOAD DATA INFILE)。

應用場景

  • 依範本複製功能模組(如 CMS 雷達/區塊複製)。
  • 測試資料批量生成。
  • 歷史資料轉換遷移。

善用 SQL 集合運算,能大幅簡化應用程式邏輯並提升寫入效能。

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