Linux shell脚本如何仅在表不存在时创建Oracle表
我是Linux新手,我想检查Oracle中是否不存在表,然后使用Linux shell脚本创建一个新表来编写代码。我可能需要做一个if-else语句 下面是我在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_
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语言。感谢您的澄清。