【发布时间】:2014-06-10 23:14:15
【问题描述】:
我需要执行一个一次性脚本(即它不会部署在活系统中)来更正现有表中的某些值。
脚本本身不相关。这里的问题是“一些值”部分:要调整的数据(键和旧值和新值)是在电子表格中收集的。假设它有很多行,比如 4 或 5 列。
在 MSSQL Server 术语中,我将创建一个临时表来保存输入值,并在将电子表格导出为 CSV 后将它们全部输入(加上一些文本转换,可能使用 sed(1) 或 paste(1) unix shell 命令):
CREATE TABLE #inputdata (col1 AS INTEGER, col2 AS VARCHAR ...);
INSERT INTO #inputdata VALUES (...);
...
INSERT INTO #inputdata VALUES (...);
-- then comes the script which can SELECT FROM #inputdata
-- just like a normal table
我需要在 Oracle 中执行此操作。
Oracle 临时表似乎只是数据方面的临时表,我的意思是,它们在使用之前应该已经存在于数据库中。我没有,也永远不会拥有创建它的必要权限; SQLServer 允许创建临时表而不管普通的表创建权限。
有什么想法吗?
【问题讨论】:
-
你有什么特权?如果您没有创建对象的权限,那么使用临时表或外部表都会被淘汰。如果您无法获得在任何模式中创建任何类型对象的权限,您可能会使用 PL/SQL 集合,但是您需要做一些工作来根据文件中的数据初始化集合。
-
在 oracle 中,你有你的表类型的数组,等等。在 pl/sql 中有很多方法来存储临时数据。如果您对架构具有创建权限,则可以执行
create table xxx as select ....。 ss64.com/oraplsql/declaretbl.html -
我拥有的唯一权限是 INSERT/SELECT/UPDATE/DELETE。没有别的了。
标签: sql-server oracle temporary-objects