0

SQL DDL特定のブロックを 1 つのファイルに書き込み、残りを 1 秒に書き込みたい出力ファイル (実際には です) があります。
私はこれを行うか、gawkまたはsedできるかを考えていました。具体的には、 1 つのファイルなどに基づいてリダイレクトし、残りを 2 番目のファイルにダンプし
たいと考えています。/^CREATE (TABLE|VIEW)[^;]+/

4

1 に答える 1

0
sed -n -r -e '/CREATE (VIEW|TABLE)/,/;/ { w file1
              d
              }
              w file2' file.sql

これは、CREATE ステートメントに関連付けられたセミコロンが CREATE キーワードと同じ行にないことを前提としています。

ファイル.sql

CREATE VIEW xyz AS
    SELECT * FROM SomeTable;

GRANT ALL ON xyz TO public;

CREATE TABLE pqr
(
    abc INTEGER NOT NULL,
    def VARCHAR(255) NOT NULL
);

GRANT SELECT, INSERT ON pqr TO public;

CREATE VIEW jkl AS
    SELECT * FROM pqr;

ファイル1

CREATE VIEW xyz AS
    SELECT * FROM SomeTable;
CREATE TABLE pqr
(
    abc INTEGER NOT NULL,
    def VARCHAR(255) NOT NULL
);
CREATE VIEW jkl AS
    SELECT * FROM pqr;

ファイル2

GRANT ALL ON xyz TO public;


GRANT SELECT, INSERT ON pqr TO public;
于 2013-05-16T23:50:00.537 に答える