要批量執行這些SQL插入語句,可根據使用的數據庫管理系統(DBMS)選擇不同的方法。以下是幾種常見的批量執行方式:

1. 使用數據庫客戶端工具
MySQL / MariaDB
  • 命令行:將所有SQL語句保存到文件(如cities.sql),然后執行:
mysql -u username -p database_name < cities.sql
  • 1.
  • MySQL Workbench:粘貼所有語句到查詢窗口,點擊執行按鈕。
PostgreSQL
  • 命令行
psql -U username -d database_name -f cities.sql
  • 1.
  • pgAdmin:在查詢工具中執行批量語句。
SQL Server
  • SSMS:粘貼所有語句到查詢窗口,按F5執行。
2. 使用編程語言執行批量插入

如果需要通過代碼執行,可使用數據庫連接庫(如Python的pymysql、Java的JDBC等)。以下是Python示例:

import pymysql# 連接數據庫
conn = pymysql.connect(host='localhost',user='username',password='password',database='database_name'
)try:with conn.cursor() as cursor:# 讀取SQL文件內容with open('cities.sql', 'r') as file:sql_statements = file.read().split(';')# 執行每條SQL語句for statement in sql_statements:if statement.strip():  # 跳過空語句cursor.execute(statement)# 提交事務conn.commit()print("批量插入成功!")except Exception as e:print(f"錯誤: {e}")conn.rollback()  # 出錯時回滾finally:conn.close()
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
3. 優化批量插入性能
合并INSERT語句(推薦)

將多個單行INSERT合并為一個多行INSERT,減少事務開銷:

INSERT INTO thorn_dict (id,ORGANIZATION_ID,CATEGORY_ID,CODE,name,STATUS,REMARK) VALUES
(999999980,3,1241,999999980,'北京','E',null),
(999999981,3,1241,999999981,'成都','E',null),
-- 其他城市...
(1000000010,3,1241,1000000010,'重慶','E',null);
COMMIT;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
禁用自動提交

如果使用編程語言,可先關閉自動提交,執行完所有語句后再手動提交:

conn.autocommit(False)  # 禁用自動提交
# 執行多條INSERT
conn.commit()  # 一次性提交
  • 1.
  • 2.
  • 3.
4. 注意事項
  1. 事務大小:批量執行時,確保事務大小在數據庫承受范圍內,避免內存溢出。
  2. 主鍵沖突:確保id字段無重復值,否則會導致插入失敗。
  3. 權限:確保用戶有執行批量插入的權限。
  4. 日志記錄:大事務可能導致日志膨脹,可考慮分批執行(如每1000條提交一次)。
選擇建議
  • 快速測試:使用數據庫客戶端工具直接執行SQL文件。
  • 生產環境:通過代碼執行,便于錯誤處理和性能優化。
  • 性能優先:使用多行INSERT語句或數據庫特定的批量插入API(如PostgreSQL的COPY命令)。