要批量执行这些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命令)。