我想从文件中提取完整的create table DDL查询

时间:2016-12-23 13:31:14

标签: unix text-extraction

我有包含n个CREATE表查询的文件,我想在unix中提取一些特定的表创建表查询。 对于下面文件中的示例,我只想要提取表xyz的创建表查询。

CREATE TABLE ABC(
       a INTEGER NOT NULL,
       b INTEGER NOT NULL,
       c CHAR(10) NOT NULL,
)
  PARTITIONING KEY a USING HASHING 
  NOT LOGGED INITIALLY 
;
ALTER TABLE abc
 ADD PRIMARY KEY (a);

CREATE TABLE xyz(
       a INTEGER NOT NULL,
       b INTEGER NOT NULL,
       c CHAR(10) NOT NULL,
)
  PARTITIONING KEY a USING HASHING 
  NOT LOGGED INITIALLY 
;
ALTER TABLE xyz
 ADD PRIMARY KEY (a);


CREATE TABLE pqb(
       a INTEGER NOT NULL,
       b INTEGER NOT NULL,
       c CHAR(10) NOT NULL,
)
  PARTITIONING KEY a USING HASHING 
  NOT LOGGED INITIALLY 
;
ALTER TABLE pqb
 ADD PRIMARY KEY (a);

1 个答案:

答案 0 :(得分:0)

  

在下面的文件中,我只想提取表xyz的创建表查询。

您可以简单地使用sed来打印从CREATE TABLE xyz;的行:

sed -n "/CREATE TABLE xyz/,/;/p" file

或带有参数:

table=xyz
sed -n "/CREATE TABLE $table/,/;/p" file