【问题标题】:Linux shell script how can I create an Oracle table only if table does not exist [duplicate]Linux shell脚本如何仅在表不存在的情况下创建Oracle表[重复]
【发布时间】:2015-11-02 23:27:47
【问题描述】:

我是 Linux 新手,我想检查 Oracle 中是否不存在一个表,而不是使用 Linux shell 脚本创建一个新表来编写代码。我可能需要做一个 if else 语句?

这是我在 Oracle 中创建表的代码

Create table traffic_profile_external
(
  TRAFFIC_PROFILE_ID    NUMBER,     
  PE_INGRESS_FLAG       VARCHAR2(1),
  PE_EGRESS_FLAG        VARCHAR2(1),
  CE_INGRESS_FLAG       VARCHAR2(1),
  CE_EGRESS_FLAG        VARCHAR2(1),
  COS_PROFILE_TYPE      VARCHAR2(10)
);

【问题讨论】:

    标签: linux oracle shell unix sh


    【解决方案1】:

    试试这个:

    Create table IF NOT EXISTS traffic_profile_external
    (
       TRAFFIC_PROFILE_ID    NUMBER,     
       PE_INGRESS_FLAG       VARCHAR2(1),
       PE_EGRESS_FLAG        VARCHAR2(1),
       CE_INGRESS_FLAG       VARCHAR2(1),
       CE_EGRESS_FLAG        VARCHAR2(1),
       COS_PROFILE_TYPE      VARCHAR2(10)
    );
    

    【讨论】:

    • create table if not exists 在 Oracle 中不是有效的语法。
    • 这是 MySQL 手册。这是甲骨文公司拥有的另一种产品。甲骨文公司拥有许多不同的关系数据库产品,包括 MySQL 和 Oracle。 MySQL 和 Oracle 支持非常不同的 SQL 方言。
    • 感谢您的澄清。
    【解决方案2】:

    您可以通过查询dba_|all_|user_tables 来查看表是否存在,具体取决于您的权限、您是否可能在其他模式中创建表等。因此您可以执行类似的操作

    select count(*)
      from all_tables
     where owner = <<schema that owns the table>>
       and table_name = 'TRAFFIC_PROFILE_EXTERNAL'
    

    然后根据返回的结果决定是否执行CREATE TABLE语句。您可以在匿名 PL/SQL 块中执行此操作,但您必须使用动态 SQL(通过 EXECUTE IMMEDIATE 语句)才能运行 CREATE TABLE 语句。您还可以将 SELECT 语句的结果提取到您的 shell 脚本中的变量中,并基于该变量进行分支。

    【讨论】:

      猜你喜欢
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多