【发布时间】:2009-10-06 10:09:39
【问题描述】:
我有一些包含表创建 SQL 的 SQL 脚本 陈述。我想删除所有具有 外键映射。
例如下面是一个脚本。
CREATE TABLE x (
ORG_ID NUMBER primary key,
BILLING_doc xmltype
);
alter table x
add (constraint fk_x foreign key
(org_id) references organization\r
(org_id))
/
我想删除引用 外键语句并将其放在另一个文件中。正如你看到的 语句以 / 结尾。有些文件以分号结尾。
我想使用sed 执行此操作。请注意,alter 语句 此处显示的是跨行分布,而不是单个 行。
感谢任何帮助。
在工作时,我发现了以下内容,但它不适用于所有脚本:
sed -e '/./{H;$!d;}' -e 'x;/foreign/!d;' myfile.sql
上述命令不起作用的脚本:
create table io_template
(
io_template_id number,
io_template_name varchar2(50),
acl_id number,
org_id number,
is_active varchar2(1),
xsl_template varchar2(50),
email_body varchar2(2000),
purpose varchar2(50) default 'CUSTOMER' not null,
content_type varchar2(50) default 'PDF' not null
);
alter table _io_template add constraint io_template_pk
primary key (io_template_id);
alter table _o_template add constraint io_template_acl_fk
foreign key (acl_id) references scum_acl(acl_id);
alter table io_template add constraint io_template_org_fk
foreign key (org_id) references scum_organization(org_id);
alter table io_template add constraint io_template_name_uk
unique (org_id, _io_template_name);
【问题讨论】:
-
查看我编辑的答案以获取
sed脚本以进行提取。