我想使用外部表或plsql将数据从csv文件加载到oracle数据库的表中。请考虑我使用sql* plus远程连接到数据库。
我读到过,要使用外部表或用plsql加载数据,我需要先创建一个目录,然后向用户(需要访问目录权限的用户)授予读、写权限。
1.我的第一步是以具有创建目录权限的用户身份连接到数据库,并执行以下语句:
SQL> create or replace directory MYCSV as 'c:\mycsv\';
但是**c:**是什么意思呢?是我的计算机的c驱动程序,我可以访问它?还是运行oracle数据库的服务器的c驱动程序,我不能访问它?
我的问题是,我没有任何关于运行oracle数据库的服务器的文件系统的信息。我不知道它是c:/,d:/还是e:/等。我必须在哪里创建这个目录?在我的计算机(客户端)或运行oracle的服务器上。mycsv是物理目录吗?
第2个问题:我需要有sql加载器或oracle数据泵在我的计算机上使用外部表?
1条答案
按热度按时间9rnv2umw1#
但是 c: 是什么意思呢?是我的计算机的c驱动程序,我可以访问它?还是运行oracle数据库的服务器的c驱动程序,我不能访问它?
From the documentation(重点已添加):
目录对象指定服务器文件系统上目录的别名,外部二进制文件LOB(BFILE)和外部表数据位于该目录中。
目录对象无法看到您的客户端C:驱动(除非你跳过铁环来分享它);除此之外-这主要与安全相关-不同的用户可以从不同的PC和客户端应用程序查看您的外部表,并且他们都需要查看相同的数据,而这些数据不可能是您个人的。
我需要有sql加载器或oracle数据泵在我的计算机上使用外部表?
不可以。外部表可以使用ORACLE_LOADER或ORACLE_DATAPUMP访问驱动程序,但它们与
sqlldr
或impdp
工具不同。但是......考虑到您的限制,通过
sqlldr
可执行文件使用SQL*Loader可能是有意义的,因为它会查看您PC上的文件。如果您还没有使用instant client,例如从完整的Oracle客户端安装,那么您可以将instant client与基本和工具包一起使用。如果您已经有用于SQL*Plus访问的即时客户端,那么您只需要在顶部添加工具包的匹配版本。