跳到正文

CSV 转 SQL

CSV to SQL

从表格推断列的类型,生成指定方言的 CREATE TABLE 和 INSERT 语句。

把一张表变成 PostgreSQL、MySQL、SQLite 或 SQL Server 的 CREATE TABLE 和 INSERT 语句,列类型从数据推断。在写出任何东西之前,它先显示将要创建的列,这是你抓出一个以文本身份进来的数值列的地方。

🔒 完全在你的浏览器里运行sqlcsvconvertdatabase

把要转成 SQL 的 CSV 放到这里

在这个标签页里读取,不会上传。能认出韩文版、日文版、中文版和西文版 Excel 存出来的文件(CP949、Shift_JIS、GBK、Windows-1252)。

怎么用

  1. 选方言

    它决定引号风格、自增语法和文本类型。SQL Server 用 NVARCHAR 而不是 VARCHAR,这是存下中文和存下一串问号的区别。

  2. 检查推断出的类型

    SQL 上方的表显示每一列、它将得到的标识符、类型以及是否可为空。你以为是 INTEGER 的列显示为 TEXT,说明里面有一个杂值。

  3. 设置批大小

    每条 INSERT 一百行是不错的默认值。一行一条更容易调试,运行起来慢得多。

常见问题

为什么每个标识符都加了引号?

因为叫 order、group 或 desc 的列是保留字,而只在必要时加引号意味着要把四种方言的保留字表都弄对。无条件加引号很无趣,但永远管用。

中文列名安全吗?

加引号之后,四种方言里都安全。如果你的服务器仍然拒绝它们,“仅 ASCII”选项会把标识符转写,数据保持不动。

我数据里的引号会怎样?

它们会被写成两个,这是 SQL 标准的转义方式。对 MySQL,反斜杠也会写成两个,因为只有 MySQL 把字面量里的反斜杠当作转义——不这样做,C:\temp 到了数据库里会带着一个制表符。

空单元格还是 NULL?

由你选,而且这很要紧:在 SQL 里空字符串是一个值,NULL 是值的缺失,它们在比较、COUNT 和唯一索引里表现不同。默认是 NULL。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。