在不使用UTL_FILE的情况下从/向PL / SQL中的文件读/写数据

时间:2009-03-26 03:46:28

标签: oracle file-io plsql

是否可以在不使用Oracle 10g中的UTL_FILE包的情况下从/向PL / SQL块中的文件读取/写入数据?

我目前有一个包含一组主键(大约28000个)的文件,我需要查询一个表,以获取需要写入文件的其他数据。我使用的架构非常受限制,没有任何创建权限。此外,没有为UTL_FILE中的过程设置具有必要读/写权限的目录才能正常工作。要求DBA提供额外的权限将花费太多时间。

有办法解决这个问题吗?

提前致谢。

[编辑] 我无法将数据加载到表格中。没有要加载的表或创建一个表的权限。我认为这是问题中最困难的部分。如果查询的条件不能方便地成为查询本身的一部分(即在单独的文件中),如何查询数据库?如果主键的数量很少,我可以生成一些select语句来提取sqlplus中的数据(使用spool),但是28000似乎太大了。

2 个答案:

答案 0 :(得分:2)

如果您无法设置目录,我会说您运气不好。 您要求在数据库服务器上读取和创建文件。这是您的DBA应该了解的内容。

您确定需要服务器上的文件吗?您可以将客户端的文件加载到表中(使用通常的客户端工具),并从那里读取/写入数据吗?

更新:

  

我无法将数据加载到表格中。没有要加载的表或创建一个表的权限。如果主键的数量很少,我可以生成一些select语句来提取sqlplus中的数据(使用spool),但是28000似乎太大了。

28000并不是那么多。在客户端循环。

答案 1 :(得分:0)

  1. 您可以使用UTL_TPC程序包使用TCP数据包写入FTP服务器。
  2. 最好在运行包之前将主键加载到表中,以允许pl / sql读/写主键表。
  3. 使用20000个密钥编写一个巨大的pl / sql程序作为插入语句来构建内存表并使用它来查询/等等。然后使用sqlplus来假脱机结果。或邮件包将结果通过电子邮件发送给您自己。