问题描述
团队,
我正在尝试使用Sql Loader将文本文件加载到普通的Oracle表中 (而不是外部表)。不幸的是,我只有通过非默认角色对表的插入权限。如果我只是在sql * plus/sql developer/toad/无论如何做一个简单的插入语句,我可以在运行insert命令之前做一个 “设置角色全部” 命令,但我无法在文档中找到我可以为sql loader做到这一点。
我已经包含了下面的代码,希望提出一个有效的测试用例。(对不起,Livesql似乎不允许创建用户和角色)。
关键是 “ALTER USER some_other_user默认角色连接;” 不包括 “some_role”。
假设我的sql加载程序控制文件真的很简单,如下所示。
假设some_file.dat如下:
我正在尝试使用Sql Loader将文本文件加载到普通的Oracle表中 (而不是外部表)。不幸的是,我只有通过非默认角色对表的插入权限。如果我只是在sql * plus/sql developer/toad/无论如何做一个简单的插入语句,我可以在运行insert命令之前做一个 “设置角色全部” 命令,但我无法在文档中找到我可以为sql loader做到这一点。
我已经包含了下面的代码,希望提出一个有效的测试用例。(对不起,Livesql似乎不允许创建用户和角色)。
关键是 “ALTER USER some_other_user默认角色连接;” 不包括 “some_role”。
CREATE TABLE some_user.SOME_TABLE( Col1 number(10) not null, col2 varchar2(100) not null, col3 varchar2(100) not null ); CREATE ROLE SOME_ROLE NOT IDENTIFIED; GRANT SELECT, INSERT, UPDATE, DELETE ON some_user.SOME_TABLE TO SOME_ROLE; CREATE USER some_other_user IDENTIFIED BY some_password DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP; ALTER USER some_other_user QUOTA UNLIMITED ON USERS; GRANT CONNECT TO some_other_user; GRANT SOME_ROLE TO some_other_user; ALTER USER some_other_user DEFAULT ROLE CONNECT ; --notice in the above the SOME_ROLE role is not listed GRANT CREATE SESSION TO some_other_user;
假设我的sql加载程序控制文件真的很简单,如下所示。
LOAD DATA
INFILE 'some_file.dat'
BADFILE 'some_file.bad'
DISCARDFILE 'some_file.dsc'
INSERT
INTO TABLE some_user.SOME_TABLE
FIELDS TERMINATED BY '|'
TRAILING NULLCOLS
(
col1 SEQUENCE(1,1),
col2,
col3
)
假设some_file.dat如下:
some text|some other text
专家解答
抱歉,我不知道在SQL * Loader命令行/parfile中启用非默认角色的选项。
所以你的选择是:
-创建一个登录触发器,启用您需要的角色
-使您需要的角色成为默认角色
-创建另一个具有此 (并且只有此) 角色的用户
所以你的选择是:
-创建一个登录触发器,启用您需要的角色
-使您需要的角色成为默认角色
-创建另一个具有此 (并且只有此) 角色的用户
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




