这是什么
把表格数据导入数据库,通常要手写建表语句和一长串 INSERT 语句,还得逐个转义单引号。这个工具帮你完成这些:粘贴 CSV,得到一份可以直接执行的 SQL 脚本,包含 CREATE TABLE 语句和分批的多行 INSERT 语句。
它按 RFC 4180 处理带引号的字段、单元格里的逗号和换行,以及双写的引号。字符串会按所选数据库正确转义,包括 MySQL 里的反斜杠和 SQL Server 的 N'…' Unicode 字符串。
怎么用
- 粘贴 CSV,上传
.csv或.tsv文件,或点 示例。 - 填写 表名。需要指定 schema 时用点分隔,例如
public.orders或dbo.orders。 - 选择 数据库:MySQL / MariaDB、PostgreSQL、SQLite 或 SQL Server。
- 选择 每条 INSERT 的行数;如果表已经存在,关闭 CREATE TABLE。
- 复制 SQL 或下载成
.sql文件,用数据库客户端执行。
分隔符会自动识别,也可以手动指定逗号、分号、Tab 或竖线。如果第一行是数据而不是列名,关闭 第一行是表头,列会依次命名为 column_1、column_2 等。
示例
下面这段 CSV:
id,name,price,in_stock
1,Ada's Tea,4.50,true
2,Coffee,,false
会生成这样的 PostgreSQL 脚本:
CREATE TABLE "products" (
"id" INTEGER,
"name" TEXT,
"price" NUMERIC(3, 2),
"in_stock" BOOLEAN
);
INSERT INTO "products" ("id", "name", "price", "in_stock") VALUES
(1, 'Ada''s Tea', 4.50, TRUE),
(2, 'Coffee', NULL, FALSE);
Ada's 里的单引号被双写,空的价格变成 NULL,数字和布尔值不加引号。
类型和方言
- MySQL / MariaDB:反引号标识符,
INT、DECIMAL、BOOLEAN、DATE、DATETIME、VARCHAR(255)或TEXT;字符串里的反斜杠会被转义。 - PostgreSQL:双引号标识符,
INTEGER、NUMERIC、BOOLEAN、DATE、TIMESTAMP和TEXT。 - SQLite:双引号标识符,使用 SQLite 的存储类型
INTEGER、REAL和TEXT;布尔值写成 1 和 0。 - SQL Server:方括号标识符,
INT、DECIMAL、BIT、DATE、DATETIME2和NVARCHAR,字符串写成N'…',每条 INSERT 最多 1000 行。 - 空单元格写成
NULL。关闭 空单元格写成 NULL 后,文本列保留空字符串。 - 在生产数据上执行前请检查推断出的类型:示例数据里只有小数字的列,以后可能需要更宽的类型。
常见问题
› 支持哪些数据库?
MySQL(及 MariaDB)、PostgreSQL、SQLite 和 Microsoft SQL Server。选择的数据库决定表名和列名的引用方式、字符串的转义方式、使用的列类型以及布尔值的写法。
› 列类型是怎么确定的?
工具会扫描每一列:整数用 INT 或 BIGINT,小数用精度足够的 DECIMAL,true/false 用 BOOLEAN(SQL Server 用 BIT),ISO 日期用 DATE 或 DATETIME,其余都用文本类型。带前导零的数字(如邮编)保持文本。关闭「识别类型」后所有列都是文本。
› 为什么 SQL Server 每条 INSERT 最多 1000 行?
SQL Server 不接受超过 1000 行的 VALUES 列表,所以在这个方言下更大的批量会被限制为 1000。其他数据库可以接受更大的批量,但每条语句 100 到 1000 行在速度和语句长度之间比较均衡。
› CSV 会上传吗?
不会。解析和生成 SQL 都在浏览器里完成,数据不会离开你的设备。