【问题标题】:Create a directory on the local file system using SQL Developer and PL/SQL使用 SQL Developer 和 PL/SQL 在本地文件系统上创建目录
【发布时间】:2020-08-05 13:40:12
【问题描述】:

我有一些 PL/SQL 用于从一组表创建一个 excel 电子表格。我正在使用 SQL Developer 运行。在我的本地机器(也安装了数据库)上它工作正常,但在我们的测试环境中,数据库在另一台机器上(我无权访问),它没有。

失败的相关 PL/SQL 语句是:

CREATE OR REPLACE DIRECTORY TEST_DIR AS 'c:\TEST'
/ 
...
v_fh := UTL_FILE.FOPEN(upper(v_dir),v_file,'w',32767);
...
UTL_FILE.PUT_LINE(v_fh,'<ss:Row>');

我知道问题是因为CREATE DIRECTORY 创建了“服务器文件系统上的目录的别名”(Oracle Docs),而不是本地的。如何在本地机器上创建文件?使用 SPOOL 可以做到这一点吗?

【问题讨论】:

  • "如何在本地机器上创建文件" - 你不能。至少不使用 PL/SQL
  • 你不能那样做。在服务器上创建它然后复制它。
  • 我无权访问服务器来执行此操作。不过我也有同样的怀疑。但我知道我可以使用 SPOOL 在本地生成文件——我之前已经这样做过以创建 CSV 文件。那么这里也可以做同样的事情吗?
  • 您可以使用脚本语言的功能在本地创建 SPOOL 文件,但不能使用 SQL 或 PLSQL。那就是你不能使用utl_file。您必须将结果集返回到您的脚本并从那里假脱机。
  • 如果它被挂载并且从数据库中可见,你可以在共​​享目录上写入;如果您可以使用结果填充表格,则可以使用 Sql Developer 在 Excel 上导出该表格。

标签: oracle plsql oracle-sqldeveloper


【解决方案1】:

CREATE DIRECTORY 和 UTL_FILE 仅在运行 Oracle 数据库实例的服务器上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-11
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    相关资源
    最近更新 更多