Linux shell脚本如何仅在表不存在时创建Oracle表

Linux shell脚本如何仅在表不存在时创建Oracle表,linux,oracle,shell,unix,sh,Linux,Oracle,Shell,Unix,Sh,我是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_

我是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)
);
试试这个:

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)
);

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

select count(*)
  from all_tables
 where owner = <<schema that owns the table>>
   and table_name = 'TRAFFIC_PROFILE_EXTERNAL'
选择计数(*)
从所有表格中
其中所有者=
和表_name='TRAFFIC_PROFILE_EXTERNAL'

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

create table if not exists
在Oracle中无效语法。我从这里得到了信息:这是一本MySQL手册。这是甲骨文公司拥有的另一种产品。Oracle公司拥有许多不同的关系数据库产品,包括MySQL和Oracle。MySQL和Oracle支持非常不同的SQL语言。感谢您的澄清。