pl/sql developer 不直接操作文件系统或云存储,其“上传下载”实为本地文件与数据库表间的数据搬运:导出是将查询结果保存为excel等本地文件,导入则依赖windows odbc驱动通过odbc importer将excel数据写入oracle表,二者原理不同、环境要求各异,混淆易致报错。

PL/SQL Developer 本身不直接操作文件系统或云存储,它只是数据库客户端工具。所谓“上传下载文件”,实际是两类完全不同的操作:一类是把数据库里的数据导出成 Excel/CSV/SQL 等本地文件(下载),另一类是把本地 Excel 数据导入到表中(上传)。混淆这两者,就容易在 Tools → ODBC Importer 里卡住、报错或漏数据。
用 PL/SQL Developer 下载 Oracle 表数据到 Excel
SQL Window 默认只显示前几十行,但点击右上角的 Export 按钮(图标是向下箭头+表格),就能导出全部结果集——不是当前可见行,而是整个查询结果。
- 导出格式选
Excel Files (*.xls; *.xlsx),路径选好后点保存,48 行、4800 行都一样导出 - 如果导出为空或只有表头,检查是否误点了
Copy to clipboard而非Export - 大字段(
BLOB、CLOB)会被转成十六进制字符串或截断,Excel 里看不到原始二进制内容 - 不支持直接导出为 CSV 并保留中文编码,建议导出 Excel 后另存为 UTF-8 CSV
用 Tools → ODBC Importer 上传 Excel 到 Oracle 表
这个功能依赖 Windows ODBC 驱动,不是纯 PL/SQL,也不是直连 Oracle。常见失败原因不是 SQL 写错,而是环境没配好。
- 必须提前在 Windows 中配置好 Excel 的 ODBC 数据源(32 位或 64 位需与 PL/SQL Developer 匹配)
- Excel 文件不能处于打开状态,否则
ODBC Importer会提示“无法访问文件” - Sheet 名带空格或特殊字符(如
Sheet1$)时,必须在连接字符串里用方括号包裹:[Sheet1$] - 列名含中文或标点,导入时要手动映射字段;若目标表字段类型是
NUMBER,Excel 单元格里有空格或文本型数字(如'123),会报ORA-01722: invalid number
别把 DBMS_CLOUD 当成 PL/SQL Developer 功能
DBMS_CLOUD 是 Oracle 自治数据库/ADB 里的 PL/SQL 包,用于操作对象存储(OCI、S3 等),和 PL/SQL Developer 完全无关。你在 PL/SQL Developer 里执行 DBMS_CLOUD.PUT_OBJECT,前提是当前连接的是自治数据库,且已配置好云凭据。
- 普通 Oracle 数据库(如 11g/12c/19c on-prem)没有
DBMS_CLOUD包,执行会报PLS-00201: identifier 'DBMS_CLOUD' must be declared -
DBMS_CLOUD的GET_OBJECT是把云存储文件读进数据库 BLOB,不是“下载到你电脑桌面” - 真正想批量上下传文件到云存储,得用命令行工具
cec upload-file或 OCI CLI,不是 PL/SQL Developer 界面
最常被忽略的一点:PL/SQL Developer 的“上传下载”本质是本地文件 ↔ 数据库表的数据搬运,它不碰操作系统文件权限、不处理网络路径、也不调用云 API。搞清这个边界,才能避开 80% 的报错和重装驱动的折腾。











