У меня есть несколько сценариев 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))
/
Я хочу удалить инструкцию alter table, ссылающуюся на
оператор внешнего ключа и положить его в другой файл. Как вы видите
утверждение заканчивается на /. Некоторые файлы заканчиваются точкой с запятой.
Я хочу сделать это, используя 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);