【问题标题】:Create table without drop if its exist如果存在则创建不删除的表
【发布时间】:2015-09-09 12:38:26
【问题描述】:

我需要 PL/SQl 方面的帮助。

所以我的问题是,以下问题:

有一个名为:temp_table 的表,我需要创建一个没有 drop/truncate 选项的 temp_table。它需要因为一个表的数据一直在变化。 所以我知道这很奇怪,但这是我日常工作所必需的。

脚本是这样工作的: 该脚本将文本导入到表格中,并给出了表格。它使用 dblink 连接数据库。它可以工作,但我一直都必须使用 DROP。但我需要(如果可能的话)创建一个没有删除/截断的现有表。

有人可以帮我吗?

非常感谢。

对不起,没有sql代码,但我认为没有必要。

【问题讨论】:

  • 抱歉,您的问题恐怕不清楚。如果要创建表,请使用CREATE TABLE,尽管在运行时在 Oracle 中创建对象基本上没有意义。您可以查询dba_|all_|user_tables 以确定该表是否存在,并且仅在它不存在时才创建它。但这充其量只能在安装脚本中有意义。我很难想象“创建现有表”会做什么。
  • 向我们展示您拥有的存储过程。
  • 至少在你的问题中添加表结构和数据。
  • 数据从何而来?

标签: oracle plsql truncate


【解决方案1】:

我认为您想要的概念是外部表。对于外部表,数据驻留在 OS 文件中,例如 CSV。这允许我们在不删除表的情况下交换数据集。

Find out more.

【讨论】:

  • 感谢您的帮助。这就是我要找的。​​span>
【解决方案2】:

我认为您想删除表是因为您想重新加载它,但您还希望尽可能接近恒定的正常运行时间?

我会创建两个临时表。你已经有一个叫:

temp_table

创建另一个名为:

temp_table_new

将新数据加载到 temp_table_new 中,然后对其进行重命名,如下所示:

RENAME TABLE temp_table TO temp_table_old
 temp_table_new TO temp_table

然后

drop table temp_table_old

这将非常快,停机时间非常短,并且可以让您拥有所描述的功能。

【讨论】:

  • 感谢帮助,经过几个小时的搜索,我发现外部表可以解决我的问题,但是你写的非常有用,非常感谢。
猜你喜欢
  • 2012-03-07
  • 1970-01-01
  • 2013-11-16
  • 2013-12-07
  • 1970-01-01
  • 2010-12-03
  • 2013-05-26
  • 2015-09-12
相关资源
最近更新 更多