# CSV 转数据库迁移规划器

根据 CSV 数据推断关系型 schema，并为 PostgreSQL、MySQL、SQLite 或 SQL Server 生成建表和 ALTER 迁移计划

> 标准页面: https://elysiatools.com/zh/tools/csv-to-database-migration-planner

- **分类:** Data Processing

- **关键词:** csv, 建表, 迁移, sql, schema

## 概述

直接粘贴 CSV 或上传文件。工具会分析每一列，推断 SQL 类型、主键候选、可能的外键提示和索引建议，再按目标数据库输出 DDL。

使用方法：
- CSV 输入 / CSV 文件：提供带表头的一份数据
- 表名：决定生成 SQL 中的目标表名
- 目标数据库：切换 PostgreSQL、MySQL、SQLite、SQL Server 方言
- 现有 Schema：可填当前 CREATE TABLE 或 DDL，用来生成 ALTER ADD 计划
- Schema 覆盖（JSON）：可手动修正类型或追加索引/引用建议，例如 {"price":"DECIMAL(14,4)","customer_id":{"type":"BIGINT","index":true}}
- 生成 ALTER 计划：开启后，若提供了现有 Schema，会补出缺失列的 ALTER 语句

自动推断内容：
- 文本 / 整数 / 小数 / 布尔 / 日期 / 日期时间
- 是否允许为空
- id、*_id、code、uuid 这类主键候选
- user_id、product_id 这类外键提示
- 高基数字段的索引建议

注意：
- 当前一次只分析一份 CSV，所以外键更多是提示而非强保证
- 如需更严格类型，可通过覆盖 JSON 手动修正后再交给工程或 DBA

## 输入项

- **CSV 输入** (textarea): id,email,total,created_at 1,alice@example.com,120.50,2026-04-05
- **CSV 文件** (file)
- **表名** (text)
- **目标数据库** (select)
- **现有 Schema** (textarea): CREATE TABLE imported_records ( id INT PRIMARY KEY );
- **Schema 覆盖（JSON）** (textarea): {"price":"DECIMAL(14,4)","customer_id":{"type":"BIGINT","index":true}}
- **生成 ALTER 计划** (checkbox)

## 适用场景

- 当你需要将业务导出的 CSV 数据快速导入关系型数据库，但不想手动编写繁琐的 CREATE TABLE 语句时。
- 当数据库表结构需要根据新版 CSV 数据进行字段扩充，需要自动生成 ALTER TABLE 语句时。
- 当处理包含大量未知列的数据集，需要快速推断数据类型、主键候选和索引建议以辅助数据库设计时。

## 工作原理

- 粘贴 CSV 文本或上传 CSV 文件，并指定目标表名和目标数据库类型（如 PostgreSQL 或 MySQL）。
- 工具会逐列扫描数据，自动推断最匹配的 SQL 数据类型（如整数、小数、日期时间等）、是否允许为空，并识别潜在的主键和外键。
- 如果提供了现有的建表语句（Schema），工具会比对差异并生成相应的 ALTER 语句，以补全缺失的列。
- 可选地使用 JSON 格式的 Schema 覆盖配置，手动微调特定字段的数据类型或强制添加索引，最后复制生成的 SQL 脚本即可使用。

## 使用案例

- 快速将第三方系统导出的客户名单或订单记录 CSV 转换为数据库表结构，以便进行后续的数据清洗和分析。
- 在敏捷开发过程中，根据产品经理提供的包含新字段的 Excel/CSV 报表，快速生成数据库表的 ALTER 扩充脚本。
- 数据库管理员（DBA）在接收到大量历史数据文件时，利用该工具初步评估数据分布，获取高基数字段的索引建议。

## 常见问题

### 支持哪些目标数据库方言？

目前支持生成 PostgreSQL、MySQL、SQLite 和 SQL Server 的标准 DDL 语句。

### 工具如何推断主键和外键？

工具会检查列名（如包含 id、code、uuid 等）以及数据的唯一性来推荐主键，并根据 user_id、product_id 等命名习惯提供外键提示。

### 如果推断的数据类型不准确怎么办？

你可以在“Schema 覆盖（JSON）”输入框中手动指定字段类型，例如 {"price":"DECIMAL(14,4)"}，工具会优先使用你的配置。

### 什么是“现有 Schema”功能？

如果你的数据库中已经存在该表，你可以将当前的 CREATE TABLE 语句粘贴到此处。开启“生成 ALTER 计划”后，工具会对比 CSV 数据，自动生成新增字段的 ALTER TABLE 语句。

### 每次可以处理多少个 CSV 文件？

当前工具每次仅支持分析单份 CSV 文件，因此生成的外键更多是结构提示，而非跨表的强引用保证。

## 相关工具

- [结构化日志解析器](https://elysiatools.com/zh/tools/structured-log-analyzer): 自动识别常见日志格式，提取核心字段并推断字段类型，支持导出为 JSON、CSV 或 SQL。
- [健身训练 PDF 生成器](https://elysiatools.com/zh/tools/fitness-workout-pdf-generator): 从 JSON 或 CSV 训练计划数据生成可打印 PDF，包含动作表格、进度格子和可选的视频二维码
- [CSV 生成 JSON-LD](https://elysiatools.com/zh/tools/json-ld-generator-from-csv): 把 CSV 或 Excel 行数据转换为适用于 Article、Product、Event 的 Schema.org JSON-LD，方便 SEO 团队直接验证
- [Mock Data 命名前缀 / 缩写冲突检测器](https://elysiatools.com/zh/tools/mock-data-naming-conflict-detector): 检测 CSV、JSON 或 schema 中视觉易混淆的字段名和前缀冲突，并给出更清晰的改名建议
- [时间序列预测与季节性分析](https://elysiatools.com/zh/tools/time-series-forecast-seasonality-analyzer): 从 CSV 或 JSON 时间序列数据中预测未来数期，并在一份报告中查看趋势、季节项和残差分解
- [训练/测试集分层切分器](https://elysiatools.com/zh/tools/train-test-split-with-stratification): 读取 CSV/JSON 数据集,按目标列做分层抽样的 train/validation/test 切分(默认 70/15/15,随机种子可复现),或分层 k 折交叉验证;输出每折类别分布报告与偏差条、重复行泄漏检查、SMOTE 过采样预览(仅在训练折上做最近邻插值),并可导出各折 CSV 为 ZIP。
- [CSV转换器](https://elysiatools.com/zh/tools/csv-transformer): 转换和处理CSV数据，支持列操作、计算和数据类型转换。 操作示例： • 重命名列: \[{"type": "rename", "column": "旧列名", "new_name": "新列名"}\] • 添加计算列: \[{"type": "add_column", "new_column": "总计", "formula": "价格 * 数量"}\] • 删除列: \[{"type": "remove_column", "remove_column": "要删除的列名"}\] • 转换数据类型: \[{"type": "convert_type", "convert_column": "年龄", "target_type": "number"}\] • 计算值: \[{"type": "calculate", "target_column": "总计", "expression": "价格 * 税率 + 运费"}\] • 过滤行: \[{"type": "filter_values", "filter_column": "状态", "operator": "equals", "value": "激活"}\]
- [PDF 表格提取到 CSV/JSON](https://elysiatools.com/zh/tools/pdf-table-extractor-to-csv-json): 用 OpenDataLoader 从 PDF 中抽取表格，并导出为结构化 JSON、扁平 CSV 或 HTML 表格

## 示例

- [CSV示例](https://elysiatools.com/zh/samples/csv-samples): 各种数据类型、大小和复杂度级别的CSV示例文件
- [CouchDB 数据库示例](https://elysiatools.com/zh/samples/couchdb): Apache CouchDB NoSQL数据库示例，包括文档操作、视图和复制
- [Python 示例](https://elysiatools.com/zh/samples/python): Python代码示例和Hello World演示
- [Web Python 数据库示例](https://elysiatools.com/zh/samples/web-database-python): Web Python 数据库示例，包括SQLite连接、SQL查询和事务处理

## 相关内容

- [数据库 Schema 迁移](https://elysiatools.com/zh/hubs/database-schema-migration): 通过规范化源数据、审阅结构差异、校验关系并准备回滚资产，规划更安全的数据库迁移。
- [XLSX 多来源 ETL 导入与数仓交付](https://elysiatools.com/zh/hubs/xlsx-etl-ingestion-workflows): 把多个工作簿和 CSV 来源整理成可追溯、带 schema 依据的 SQL、Parquet 与对象存储批处理输入。
