{"id":26244506,"url":"https://github.com/quansitech/mysql-to-excel","last_synced_at":"2026-04-21T22:32:17.912Z","repository":{"id":281763662,"uuid":"946346501","full_name":"quansitech/mysql-to-excel","owner":"quansitech","description":"通过sql将mysql数据导出成excel","archived":false,"fork":false,"pushed_at":"2025-03-11T02:13:28.000Z","size":18,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-11T03:20:56.463Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quansitech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-11T02:01:52.000Z","updated_at":"2025-03-11T02:13:31.000Z","dependencies_parsed_at":"2025-03-11T03:21:00.065Z","dependency_job_id":"1ef66f8b-84b2-4c8e-85c5-935e96f1718d","html_url":"https://github.com/quansitech/mysql-to-excel","commit_stats":null,"previous_names":["quansitech/mysql-to-excel"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quansitech%2Fmysql-to-excel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quansitech%2Fmysql-to-excel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quansitech%2Fmysql-to-excel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quansitech%2Fmysql-to-excel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quansitech","download_url":"https://codeload.github.com/quansitech/mysql-to-excel/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243395156,"owners_count":20284088,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-13T11:27:50.843Z","updated_at":"2025-12-29T22:33:52.548Z","avatar_url":"https://github.com/quansitech.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MySQL-To-Excel 数据导出工具\r\n\r\n一个用Rust编写的多功能工具，用于MySQL数据库和Excel文件之间的数据转换。\r\n\r\n## 功能特性\r\n\r\n- **MySQL到Excel导出**:\r\n  - 支持分页查询大数据量，避免内存溢出\r\n  - 自动识别列名和数据格式\r\n  - 显示进度条，直观查看导出进度\r\n  - 生成标准Excel格式文件\r\n\r\n- **Excel到Laravel迁移**:\r\n  - 从Excel文件生成Laravel迁移文件\r\n  - 自动推断字段类型\r\n  - 支持自定义表名\r\n  - 可选添加自增主键和时间戳字段\r\n\r\n## 运行环境\r\n\r\n- Rust 1.65+ (仅编译时需要)\r\n- MySQL 5.7+ 数据库 (仅MySQL到Excel功能需要)\r\n\r\n## 安装方式\r\n\r\n### 1. 下载预编译版本\r\n\r\n从Releases页面下载对应平台的预编译版本。\r\n\r\n### 2. 从源码编译\r\n\r\n```bash\r\ngit clone https://github.com/your-repo/mysql-to-excel.git\r\ncd mysql-to-excel\r\ncargo build --release\r\n\r\n##可兼容更多的linux版本\r\ncargo build --release --target x86_64-unknown-linux-musl\r\n```\r\n\r\n编译后的可执行文件位于 `target/release/mysql-to-excel`\r\n\r\n## 使用说明\r\n\r\n本工具提供两个主要功能：MySQL到Excel导出和Excel到Laravel迁移。\r\n\r\n### 1. MySQL到Excel导出\r\n\r\n#### 配置说明\r\n\r\n1. 复制 `config-sample.toml` 为 `config.toml`\r\n2. 编辑 `config.toml` 文件：\r\n\r\n```toml\r\n[database]\r\nhost = \"数据库地址\"\r\nport = 3306       # 数据库端口\r\nuser = \"用户名\"\r\npassword = \"密码\"\r\ndb_name = \"数据库名\"\r\n\r\n[query]\r\nsql = \"SELECT * FROM your_table\"  # 要执行的SQL查询\r\npage_size = 100                  # 每页数据量(建议100-1000)\r\n```\r\n\r\n#### 执行导出\r\n\r\n运行以下命令执行导出操作：\r\n\r\n```bash\r\n./mysql-to-excel export\r\n```\r\n\r\n程序运行完成后，会在当前目录生成 `data.xlsx` 文件。\r\n\r\n#### 输出文件格式\r\n\r\n- 第一行为列名\r\n- 后续每行为查询结果数据\r\n- 自动转换MySQL数据类型为Excel格式\r\n\r\n### 2. Excel到Laravel迁移\r\n\r\n此功能可以将Excel文件转换为Laravel迁移文件，方便数据库迁移。\r\n\r\n#### 基本用法\r\n\r\n```bash\r\n./mysql-to-excel generate-migration -i 数据文件.xlsx\r\n```\r\n\r\n#### 高级选项\r\n\r\n```bash\r\n./mysql-to-excel generate-migration \\\r\n  -i 数据文件.xlsx \\\r\n  -o ./migrations \\\r\n  -t 自定义表名 \\\r\n  --with-pk \\\r\n  --with-timestamps \\\r\n  --chunk-size 200\r\n```\r\n\r\n参数说明：\r\n- `-i, --input`: 输入Excel文件路径（必需）\r\n- `-o, --output-dir`: 输出目录，默认为 `./migrations`\r\n- `-t, --table`: 自定义表名，默认使用Excel文件名（转为snake_case）\r\n- `--with-pk`: 添加自增主键 `id`\r\n- `--with-timestamps`: 添加 `created_at` 和 `updated_at` 时间戳字段\r\n- `--chunk-size`: 每个INSERT语句包含的行数，默认为100\r\n\r\n#### 注意事项\r\n\r\n- Excel文件的第一行必须是列标题\r\n- 至少需要有一行数据用于推断字段类型\r\n- 列名会自动转换为snake_case格式\r\n\r\n## 性能优化建议\r\n\r\n### MySQL到Excel导出\r\n\r\n- **page_size设置**:\r\n  - 小数据量（\u003c10万行）：可设置较大值（500-1000）\r\n  - 大数据量（\u003e10万行）：建议设置较小值（100-300）\r\n  - 内存受限环境：设置更小的值（50-100）\r\n\r\n- **SQL查询优化**:\r\n  - 尽量使用索引字段进行查询\r\n  - 避免使用 `SELECT *`，只选择需要的列\r\n  - 考虑在SQL中进行预处理（如格式化、计算等）\r\n\r\n### Excel到Laravel迁移\r\n\r\n- 对于大型Excel文件，建议增加chunk_size值（200-500）\r\n- 如果只需要结构而不需要数据，可以使用较小的Excel样本文件\r\n\r\n## 常见问题解答\r\n\r\n### 1. 数据库连接失败\r\n\r\n**问题**: 程序报错无法连接到数据库。\r\n\r\n**解决方案**:\r\n- 检查config.toml中的数据库连接信息是否正确\r\n- 确认MySQL服务器是否运行\r\n- 检查网络连接和防火墙设置\r\n- 验证用户名和密码是否正确\r\n\r\n### 2. 内存使用过高\r\n\r\n**问题**: 导出大数据量时程序内存使用过高。\r\n\r\n**解决方案**:\r\n- 减小config.toml中的page_size值\r\n- 优化SQL查询，只选择必要的列\r\n- 考虑分多次导出（使用WHERE子句限制范围）\r\n\r\n### 3. 导出速度慢\r\n\r\n**问题**: 数据导出速度较慢。\r\n\r\n**解决方案**:\r\n- 增大page_size值（在内存允许的情况下）\r\n- 优化SQL查询，添加适当的索引\r\n- 检查网络连接质量\r\n- 确保数据库服务器负载不过高\r\n\r\n### 4. 数据类型转换问题\r\n\r\n**问题**: 某些特殊数据类型在Excel中显示不正确。\r\n\r\n**解决方案**:\r\n- 在SQL查询中使用CAST或CONVERT函数预处理数据\r\n- 对于日期时间类型，考虑使用特定的格式化函数\r\n\r\n## 注意事项\r\n\r\n1. 请确保SQL查询语句正确且权限足够\r\n2. 大数据量导出时，建议设置合理的page_size(100-1000)\r\n3. 程序运行期间请保持网络连接稳定\r\n4. 导出的Excel文件会覆盖同名文件，请注意备份\r\n5. 配置文件中的数据库密码是明文存储，请注意安全\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquansitech%2Fmysql-to-excel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquansitech%2Fmysql-to-excel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquansitech%2Fmysql-to-excel/lists"}