在不使用 UTL_FILE 的情况下从 PL/SQL 中的文件读取/写入数据
Posted
技术标签:
【中文标题】在不使用 UTL_FILE 的情况下从 PL/SQL 中的文件读取/写入数据【英文标题】:Read/Write data from/to a file in PL/SQL without using UTL_FILE 【发布时间】:2009-03-26 03:46:28 【问题描述】:是否可以在不使用 Oracle 10g 中的 UTL_FILE 包的情况下从 PL/SQL 块中的文件读取/写入数据?
我目前有一个包含一组主键(大约 28000)的文件,我需要查询一个表以获取需要写入文件的其他数据。我使用的架构非常受限,没有任何创建权限。此外,没有为 UTL_FILE 中的过程正常工作设置必要的读/写权限的目录。要求 DBA 提供额外的权限会花费太多时间。
有没有办法解决这个问题?
提前致谢。
[编辑]我无法将数据加载到表格中。没有要加载的表或创建表的权限。我认为这是问题中最困难的部分。如果查询条件不能方便地成为查询本身的一部分(即在单独的文件中),如何查询数据库?如果主键数量较少,我可以生成一些选择语句来提取 sqlplus 中的数据(使用 spool),但是 28000 似乎太大了。
【问题讨论】:
好吧,如果您无法设置目录,我会说您不走运。 您要求在数据库服务器上读取和创建文件。这是您的 DBA 应该知道的事情。
您确定需要服务器上的文件吗?您可以将文件从客户端加载到表中(使用通常的客户端工具),然后从那里读取/写入数据吗?
更新:
我无法将数据加载到表中。没有要加载的表或创建表的权限。如果主键数量较少,我可以生成多个选择语句来提取 sqlplus 中的数据(使用 spool),但是 28000 似乎太大了。
28000 不算多。在客户端循环。
【讨论】:
我掉进了过早优化的陷阱。感谢您的提醒。【参考方案2】:-
您可以使用 UTL_TPC 包通过 TCP 数据包写入 FTP 服务器。
最好在运行包之前将主键加载到表中,以允许 pl/sql 读取/写入主键表。
用 20000 个键作为插入语句编写一个巨大的 pl/sql 程序,以构建一个内存表并使用它来查询 / 等。然后使用 sqlplus 假脱机结果。或将结果通过电子邮件发送给自己的邮件包。
【讨论】:
UTL_TPC 看起来很有趣。将来可能会派上用场。谢谢。以上是关于在不使用 UTL_FILE 的情况下从 PL/SQL 中的文件读取/写入数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用子进程的情况下从 python 自动化脚本中运行 python 'sdist' 命令?
在不使用表格的情况下从 BigQuery 中的 csv 文件中检索数据
如何在不使用 Xcode、iPhone 中的谷歌地图的情况下从地址获取纬度和经度