不喜欢广告? 去 无广告 今天
转换为 CSV 到 SQL 插入语句转换器。
数据开发人员
广告 · 消除?
SQL 插入参考
数据库的插入语法。
| 数据库 | 标识符引用 | 批量插入 |
|---|---|---|
| MySQL | `column` | INSERT INTO t VALUES (...), (...) |
| PostgreSQL | "column" | INSERT INTO t VALUES (...), (...) |
| SQLite | "column" | INSERT INTO t VALUES (...), (...) |
| SQL Server | [column] | INSERT INTO t VALUES (...), (...) 请输入具体的文本内容,以便进行翻译。 |
| Oracle。 | "column" | INSERT ALL INTO t VALUES (...) ... SELECT 1 FROM DUAL |
逃离规则
- 单引号在字符串中被双重:
```python
print("This is a test: 'Hello'")
```
输出为:`This is a test: 'Hello'`。
'it''s' - MySQL 反引号标识符:
MySQL 反引号(backticks)用于处理包含特殊字符或空格的表名、列名等对象名称,以避免与关键字冲突。
```sql
CREATE TABLE `my table` (
id INT PRIMARY KEY,
name VARCHAR(255)
);
```
反引号可以用于以下场景:
- 处理包含空格或特殊字符的名称。
- 避免与保留字(如 `order`, `group by`)冲突。
**注意**:在某些数据库系统中,反引号可能被视为SQL注入攻击的风险。建议使用其他方法(如大小写敏感或上划线 `_`) 来避免潜在问题。
`my column` - SQL Server 括号标识符:
SQL Server 使用括号作为标识符,用于区分不同的语法元素。
[my column] - PostgreSQL/SQLite/Oracle 双引号标识符:
"my column"
常见陷阱
- CSV字段中包含逗号时应用双引号括起。
- 双引号内的引用字段中的单引号通过双重化处理:
```json
"example": "It's a test"
→ "example": "It\"'s a test"
```
"" - 空字段可能表示为NULL或根据上下文为空字符串。
- 日期格式因数据库而异——验证日期列是否与您的数据库格式匹配。
- 数据库服务器限制每个批量插入操作最多支持1000行。
- Oracle 不支持标准的多行插入操作,使用 **INSERT ALL** 语法。
广告 · 消除?
指导
转换为 CSV 到 SQL 插入语句转换器。
将CSV数据转换为MySQL、PostgreSQL、SQLite、SQL Server和Oracle的SQL插入语句。将您的CSV文件(带有列标题)粘贴进来,配置选项如批量插入和类型检测,并获得可以执行的安全 SQL 语句。支持引号字段、嵌套逗号、NULL值以及各数据库方言特定的转义处理。
如何使用
将CSV数据粘贴到输入区域(第一行必须是列标题)。选择目标数据库类型,设置表名,并选择INSERT风格(单个、批量或分块)。转换器会自动检测列类型并生成正确的SQL语句进行自动逃逸。在预览中查看已检测到的列,如果需要可覆盖类型,然后复制或下载SQL输出。可选地包含CREATE TABLE语句或事务框架。
特征
- 五种数据库类型 MySQL(反单引号标识符)、PostgreSQL(双引号标识符)、SQLite(双引号)、SQL Server(方括号标识符)和Oracle(插入所有语法)。每种数据库都有正确的转义和引用规则。
- 批量插入 每行单独插入,批量多行插入使用`VALUES`子句,或可配置分块大小。SQL Server自动限制为每个语句1000行。Oracle使用`INSERT ALL ... SELECT FROM dual`。
- 自动识别输入类型 自动识别数据中的整数、浮点数、布尔值、NULL和字符串。 数字不加引号,字符串经过正确转义并加引号,NULL保持原样为“null”。
- 列柱编辑器 已检测到预览列的名称、类型和样本值。在生成SQL之前,重命名列并覆盖类型检测。
- 处理空值(NULL) 配置空值处理方式:将其视为SQL中的NULL、空字符串,或者检测文本中的“NULL”作为实际的NULL值。
- 创建表 可选地在 `CREATE TABLE` 语句前添加根据每种数据库方言推断的列类型映射(如 VARCHAR、INT、DECIMAL、BOOLEAN 等)。
- 交易包装器 可选地将输出包装在BEGIN/COMMIT中以实现原子执行。
- RFC 4180 CSV 解析 RFC 4180 CSV 解析规范 处理包含引号内嵌逗号、转义引号和字段内换行符的引用字段。自动检测分隔符(逗号、制表符、分号、管道符)。
SQL 插入语法
SQL 插入语句向数据库表中添加行。基本语法如下:
```sql
INSERT INTO 表名 (列1, 列2, ...) VALUES (值1, 值2, ...);
``` INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2'); 字符串值必须正确转义——值内的单引号被重复(O’Brien变为O”Brien)。数值插入时不加引号。NULL是一个关键词,不是字符串。批量插入将多行合并成单一语句以提高性能: INSERT INTO table VALUES (...), (...), (...);
广告 · 消除?
如何在CSV到SQL的转换中处理特殊字符?
本转换器自动根据数据库方言对特殊字符进行转义。字符串值中的单引号被双引号替代(O’Brien变为O”Brien)。反斜杠在需要时进行转义。包含空格或保留词的列名会根据方言使用标识符进行引用:后引号用于MySQL,双引号用于PostgreSQL/SQLite/Oracle,方括号用于SQL Server。CSV字段中的嵌入逗号和换行符由RFC 4180解析器处理。
在单个和批量插入操作中,有什么区别?
每条 **INSERT** 操作会根据 CSV 行生成一条单独的 **INSERT** 语句——简单但对于大数据集来说速度较慢。批量 **INSERT** 将多个行合并为一条语句:`INSERT INTO table VALUES (…), (…), (…)`。这种方式显著提高了性能,因为它减少了数据库的往返次数。
大多数数据库支持批量 **INSERT**,但存在一些限制:SQL Server 最多允许每条 **INSERT** 操作 1000 行,而 MySQL、PostgreSQL 和 SQLite 没有固定行限制,但可能会遇到包尺寸的限制。Oracle 使用不同的语法:**INSERT ALL … INTO … SELECT FROM dual**。
如何进行类型检测?
转换器会检查每一列的值以推断其类型。匹配整数模式(仅包含数字,可选负号)的值被定义为 INTEGER。小数数字则变成 FLOAT 或 DECIMAL。真/假及是/否类型的值转换为 BOOLEAN。空单元格和“NULL”文本会根据配置生成 SQL NULL(可配置)。其他内容均视为字符串处理(VARCHAR)。您可以在生成 SQL 之前,通过查看列预览来覆写任何检测到的类型。类型推断影响了 VALUES 的引用格式(数值不加引号,字符串加引号)以及可选的 CREATE TABLE 列定义。
您的CSV数据是否已发送到服务器?
不——所有CSV解析、类型检测、SQL生成和转义都在用户的浏览器端通过JavaScript完成。您的数据永远不会离开设备。这很重要,因为CSV数据通常包含敏感信息:客户记录、财务数据、凭据或内部商业数据。所有处理都是客户端运行,无需API调用或数据存储。
