# SQLScriptUtil **Repository Path**: loloven/sqlscript-util ## Basic Information - **Project Name**: SQLScriptUtil - **Description**: SQL脚本工具 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-11 - **Last Updated**: 2025-12-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SQL脚本工具集 ## 功能描述 该工具集提供了一系列SQL相关的实用功能,包括: - 生成SQL插入语句 - 拆分SQL脚本(按表名或行数) - 执行SQL脚本 ## 项目结构 ``` ├── app/ # 应用层 │ ├── cli/ # 命令行界面 │ │ ├── main_cli.py # 主命令行入口 │ │ ├── sql_executor_cli.py # SQL执行命令 │ │ ├── sql_generator_cli.py # SQL生成命令 │ │ └── sql_splitter_cli.py # SQL拆分命令 │ └── services/ # 应用服务 │ ├── sql_executor.py # SQL执行服务 │ ├── sql_generator.py # SQL生成服务 │ └── sql_splitter.py # SQL拆分服务 ├── config/ # 配置管理 │ └── config.py # 配置读取模块 ├── domain/ # 领域层 │ ├── models/ # 领域模型 │ │ ├── sql_script.py # SQL脚本模型 │ │ └── store.py # 门店模型 │ └── services/ # 领域服务 │ ├── data_extractor.py # 数据提取服务 │ └── sql_builder.py # SQL构建服务 ├── infra/ # 基础设施层 │ ├── database/ # 数据库访问 │ │ └── connector.py # 数据库连接管理 │ └── file/ # 文件处理 │ └── file_handler.py # 文件读写服务 ├── old_py/ # 旧版脚本(保留用于参考) ├── test/ # 测试用例 ├── .gitignore # Git忽略文件 ├── README.md # 项目说明文档 └── config.ini.example # 配置文件示例 ``` ## 环境要求 - Python 3.6+ - 依赖库: - pymysql(用于MySQL数据库) - psycopg2(用于PostgreSQL数据库) - sqlite3(Python内置,用于SQLite数据库) - configparser(Python内置,用于读取配置文件) ## 安装依赖 ```bash pip install pymysql psycopg2-binary ``` ## 配置文件 1. 复制示例配置文件并修改: ```bash cp config.ini.example config.ini ``` 2. 根据实际情况修改 `config.ini` 文件中的数据库连接信息。 ## 使用示例 ### 主命令行界面 ```bash # 查看帮助信息 python app/cli/main_cli.py --help # 查看子命令帮助 python app/cli/main_cli.py generate --help python app/cli/main_cli.py split --help python app/cli/main_cli.py execute --help ``` ### 功能1:生成SQL脚本 ```bash # 生成SQL插入语句 python app/cli/main_cli.py generate --config config.ini --output output.sql # 生成批量插入语句 python app/cli/main_cli.py generate --config config.ini --output output.sql --batch ``` ### 功能2:拆分SQL脚本 #### 按表名拆分 ```bash python app/cli/main_cli.py split table input.sql --output split_by_tables ``` #### 按行数拆分 ```bash # 每1000行拆分为一个文件 python app/cli/main_cli.py split lines input.sql --output split_by_lines --lines 1000 ``` ### 功能3:执行SQL脚本 ```bash # 执行指定目录下的SQL文件 python app/cli/main_cli.py execute --dirs sql_files/ --batch-size 5000 --config config.ini # 自定义事务提交间隔(每10000条语句提交一次事务) python app/cli/main_cli.py execute --dirs sql_files/ --batch-size 5000 --commit-interval 10000 --config config.ini # 开启详细日志输出 python app/cli/main_cli.py execute --dirs sql_files/ --batch-size 5000 --verbose --config config.ini ``` ## 功能说明 1. **SQL生成**: - 从数据库获取数据生成插入语句 - 支持批量插入格式 - 自动替换store_code值 - 智能处理数据类型(NULL值、字符串转义等) 2. **SQL拆分**: - 支持按表名拆分(每个表的SQL单独保存) - 支持按行数拆分(指定行数限制) - 生成的文件按顺序命名,便于后续处理 3. **SQL执行**: - **高效批量执行**:使用数据库原生批量执行API,显著提高执行速度 - **连接池支持**:内置连接池管理,减少连接创建和销毁的开销 - **智能INSERT合并**:自动合并相同表的INSERT语句,减少网络往返 - **优化的事务管理**:支持自定义事务提交间隔,减少事务提交次数 - **流式处理**:逐行读取和解析SQL文件,减少内存占用 - **详细日志选项**:支持Verbose模式,可查看详细执行信息 - **支持从多个目录读取SQL文件**:按文件名排序执行 - **支持不同数据库类型**:MySQL、PostgreSQL、SQLite ## 数据库支持 - MySQL - PostgreSQL - SQLite ## 注意事项 1. 确保配置文件中的数据库连接信息正确 2. 执行SQL脚本前请仔细检查脚本内容,避免误操作 3. 对于大数据量的表,建议使用批量操作功能 4. 生成或执行SQL时,建议先在测试环境验证 ## 许可证 MIT