在线 CSV 转 SQL 工具:将表格数据导入数据库
什么是 CSV 转 SQL
CSV 转 SQL 是将 CSV(逗号分隔值)格式的表格数据转换为 SQL INSERT 语句的过程,用于将数据批量导入数据库。试试 CSV 转 SQL 工具,一键把任意 CSV 转成可直接执行的 INSERT 语句。
转换示例
CSV 输入:
id,name,email,age
1,张三,zhang@example.com,28
2,李四,li@example.com,32
SQL 输出:
INSERT INTO users (id, name, email, age) VALUES
(1, '张三', 'zhang@example.com', 28),
(2, '李四', 'li@example.com', 32);
为什么需要 CSV 转 SQL
- 数据迁移:从 Excel/CSV 批量导入数据到数据库
- 测试数据:快速创建大量测试数据
- 数据备份:将数据库导出为 CSV 后重新导入
- 系统集成:将第三方系统的 CSV 数据导入自有数据库
- 报表数据:将报表 CSV 数据写入分析数据库
- 初始化数据:为新数据库导入初始数据
转换注意事项
数据类型映射
| CSV 值 | SQL 类型 | 注意事项 | |--------|---------|---------| | 纯数字 | INT / BIGINT | 检查数值范围 | | 小数 | DECIMAL / FLOAT | 注意精度 | | 日期 | DATE / DATETIME | 注意日期格式 | | 布尔值 | BOOLEAN | true/false vs 1/0 | | 空值 | NULL | 区分空字符串和 NULL | | 文本 | VARCHAR / TEXT | 注意长度限制 |
SQL 注入防护
⚠️ 重要:CSV 数据中的特殊字符(如单引号 ')需要转义!
-- 错误:O'Brien 会导致 SQL 错误
INSERT INTO users (name) VALUES ('O'Brien');
-- 正确:转义单引号
INSERT INTO users (name) VALUES ('O''Brien');
如何使用在线工具
使用 ToolVault 工具匣 的 CSV 转 SQL 工具:
- 粘贴 CSV 数据
- 设置表名和列名
- 选择数据库类型(MySQL、PostgreSQL、SQLite)
- 自动生成 INSERT 语句
- 支持批量插入优化
代码中的 CSV 转 SQL
JavaScript
function csvToSQL(csv, tableName) {
const lines = csv.trim().split('\n');
const headers = lines[0].split(',').map(h => h.trim());
const values = lines.slice(1).map(line => {
return '(' + line.split(',').map(val => {
val = val.trim();
if (val === '' || val === 'NULL') return 'NULL';
if (!isNaN(val)) return val;
return "'" + val.replace(/'/g, "''") + "'";
}).join(', ') + ')';
}).join(',\n');
return `INSERT INTO ${tableName} (${headers.join(', ')}) VALUES\n${values};`;
}
Python
import csv
import io
def csv_to_sql(csv_text, table_name):
reader = csv.reader(io.StringIO(csv_text))
headers = next(reader)
columns = ', '.join(headers)
rows = []
for row in reader:
values = []
for val in row:
if val == '' or val.upper() == 'NULL':
values.append('NULL')
elif val.replace('.','',1).replace('-','',1).isdigit():
values.append(val)
else:
values.append("'" + val.replace("'", "''") + "'")
rows.append('(' + ', '.join(values) + ')')
return f"INSERT INTO {table_name} ({columns}) VALUES\n" + ',\n'.join(rows) + ';'
批量导入优化
-- MySQL: 使用 LOAD DATA 导入(最快方式)
LOAD DATA INFILE '/path/to/data.csv'
INTO TABLE users
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
-- PostgreSQL: 使用 COPY 命令
COPY users (id, name, email, age)
FROM '/path/to/data.csv'
DELIMITER ','
CSV HEADER;
FAQ
CSV 中有换行怎么办?
如果字段内包含换行,需要用双引号包裹该字段。在线工具通常能自动处理这种情况。手动处理时,确保字段被双引号包裹。
导入大量数据很慢怎么办?
- 使用批量 INSERT 代替单条 INSERT
- 使用数据库原生导入命令(LOAD DATA / COPY)
- 暂时禁用索引和约束,导入后重建
- 分批导入(每批 1000-5000 条)
- 使用事务包裹导入操作
CSV 和 SQL 的编码不一致怎么办?
确保 CSV 文件使用 UTF-8 编码。数据库连接也要设置 UTF-8 编码。在 MySQL 中使用 SET NAMES utf8mb4。
本文由 ToolVault 工具匣 提供。更多开发者工具请访问 首页。
相关工具
相关文章
HTML 表格转 JSON 怎么保留行列结构?
把网页里的 HTML 表格转成 JSON,怎么保留表头、处理合并单元格、保持嵌套结构?逐步方法并附本站 HTML 表格转 JSON 工具。
Excel 转 JSON 后日期变成数字 / 中文乱码,怎么办?
把 Excel 转成 JSON 时日期变 44927 这种数字、中文乱码、空单元格丢失怎么办?讲清 Excel 日期序列号与编码坑,并附本站 Excel 转 JSON 工具。
表格数据互转完全指南:Excel、CSV、JSON、Markdown、HTML 一站式转换
Excel、CSV、JSON、Markdown、HTML 五种表格格式互转全解析:各格式特点、转换场景、在线工具实操与常见陷阱,12 个免费在线转换器一站搞定。