---
title: "将 CSV 转换为 Oracle"
description: "在浏览器中将 CSV 文件转换为适用于 Oracle 的 SQL：先是带有类型化列的 CREATE TABLE，然后是 INSERT 语句。免费，文件永远不会上传。"
canonical: https://intosql.com/zh-cn/csv-to-oracle
last_updated: 2026-10-15
---

# 将 CSV 转换为 Oracle

拖入你的 CSV 文件，即可得到包含 CREATE TABLE 和 INSERT 语句的 Oracle 脚本。每列都会获得类型，每处修正都会连同所在行和列一起列出。

## 从 CSV 到 Oracle，逐列说明

上方的示例 ventas_2024.csv 由 IntoSQL 为 Oracle 写出的结果：每列在文件中的内容、获得的类型，以及第一个值在脚本中的写法。

| 文件中 | 第一个值 | 列 | Oracle 类型 | 脚本中 |
| --- | --- | --- | --- | --- |
| Folio | `00412` | `folio` | `VARCHAR2(8 CHAR)` | `'00412'` |
| Cliente | `Peña Muñoz` | `cliente` | `VARCHAR2(16 CHAR)` | `'Peña Muñoz'` |
| Ciudad | `Mérida` | `ciudad` | `VARCHAR2(16 CHAR)` | `'Mérida'` |
| Fecha | `15/02/2024` | `fecha` | `DATE` | `DATE '2024-02-15'` |
| Importe | `1.234,50` | `importe` | `NUMBER(6,2)` | `1234.50` |
| Pagado | `sí` | `pagado` | `NUMBER(1)` | `1` |

## 将脚本导入 Oracle

下载的是普通的 .sql 文件。用 Oracle 自带的工具运行即可。

### Oracle

```shell
sqlplus user@//localhost/mydb @ventas_2024.oracle.sql
```

脚本会关闭替换变量（SET DEFINE OFF），因此数据中的 & 符号会保持不变。 在 SQL Developer 中打开脚本，然后选择 Run Script (F5)。

## IntoSQL 如何读取 CSV 文件

- 会自动识别编码，包括 Windows-1252 和 UTF-16，因此重音字符和 ñ 都能完整保留。
- 会自动识别分隔符：逗号、分号、制表符或竖线。使用分号时，像 1.234,50 这样的小数逗号会按数字读取。
- 带引号的值可以包含分隔符和换行。

## 关于 Oracle 需要了解的内容

- 是与否的值变为 NUMBER(1)，存储 1 或 0，所有 Oracle 版本都支持。
- 文本为按字符计长度的 VARCHAR2；超过 4000 字节变为 CLOB。Oracle 将空文本存储为 NULL。
- 行通过 INSERT ALL 插入，长值会被拆分，以便 SQL*Plus 接受。

### 各类值在 Oracle 中的存储方式

| 值 | Oracle |
| --- | --- |
| 是与否 | `NUMBER(1)` |
| 整数 | `NUMBER(10)` |
| 大整数 | `NUMBER(19)` |
| 小数 | `NUMBER(p,s)` |
| 浮点数 | `BINARY_DOUBLE` |
| 日期 | `DATE` |
| 时刻 | `INTERVAL DAY(0) TO SECOND` |
| 带时间的日期 | `TIMESTAMP` |
| 带时间和时区偏移的日期 | `TIMESTAMP WITH TIME ZONE` |
| 文本 | `VARCHAR2(n CHAR) · CLOB` |

## 关于 CSV 转 Oracle 的问题

### 如何将 CSV 转换为 Oracle？

将文件拖到本页顶部的转换器上。它会找到表头、读取每个值并写出 Oracle 脚本，同时列出每处修正。下载脚本后用 SQL*Plus 运行。

### 如果我的 CSV 使用分号或制表符怎么办？

分隔符会被自动检测：逗号、分号、制表符或竖线。你也可以在"更多选项"中设置。使用分号时，像 1.234,50 这样的小数逗号会读作数字。

### 它使用哪些 Oracle 类型？

是/否值变为 NUMBER(1)，整数变为 NUMBER(10)，小数变为 NUMBER(p,s)，日期变为 DATE，带时间的日期变为 TIMESTAMP，文本变为 VARCHAR2(n CHAR)。长度取自每列中最长的值。

### 在 Oracle 中会保留前导零吗？

会。像 00412 这样的代码保持为文本，因此 Oracle 将其存储为 VARCHAR2(8 CHAR)，脚本中写作 '00412'。

### 能不用脚本直接把数据导入 Oracle 吗？

不能。请下载脚本并用 SQL*Plus 运行。PostgreSQL、MySQL、MariaDB 和 SQLite 支持通过桌面应用或命令行直接导入。

### CSV 文件可以多大？

浏览器以流式方式读取 CSV，因此几 GB 的文件也能处理。在 Apple M4 笔记本电脑上，命令行转换一个 174 MB、一百万行的 CSV 不到一秒。

## CSV 转其他数据库

- [将 CSV 转换为 SQL](https://intosql.com/zh-cn/csv-to-sql)
- [将 CSV 转换为 PostgreSQL](https://intosql.com/zh-cn/csv-to-postgresql)
- [将 CSV 转换为 MySQL](https://intosql.com/zh-cn/csv-to-mysql)
- [将 CSV 转换为 MariaDB](https://intosql.com/zh-cn/csv-to-mariadb)
- [将 CSV 转换为 SQLite](https://intosql.com/zh-cn/csv-to-sqlite)
- [将 CSV 转换为 SQL Server](https://intosql.com/zh-cn/csv-to-sql-server)

## 其他文件转 Oracle

- [将 Excel 转换为 Oracle](https://intosql.com/zh-cn/excel-to-oracle)
- [将 JSON 转换为 Oracle](https://intosql.com/zh-cn/json-to-oracle)
