명령을 사용하여 SQL에 덤프되는 데이터베이스가 있고 create table
예를 들어 테이블을 삭제하는 것과 같이 특정 개체에 주어진 명령을 적용하는 스크립트를 만들어야 합니다.
예를 들어 테이블을 삭제하는 경우 로 시작하는 행을 스캔하고 create table
명령을 사용하여 세 번째 필드를 추출합니다 cut
. 그런 다음 각 출력 줄 앞에 drop table
follow cascade;
또는 기타 적절한 명령과 같은 명령을 추가하고 싶습니다.
지금 제가 사용하고 있는 명령어는 입니다 cat datadump.sql | cut -d ' ' -f 1-3 | grep 'CREATE TABLE' | uniq | cut -d ' ' -f 3
.
그러면 다음과 유사한 목록이 출력됩니다.
table1
table2
table3
나는로 변환하고 싶다
drop table table1 cascade;
drop table table2 cascade;
등을 파일로 저장하여 필요할 때 실행할 수 있습니다. 실제로 접두사와 접미사가 입력에 따라 조건이 되기를 원하지만 지금은 간단한 리터럴 텍스트로 충분합니다.
다음은 댓글에서 요청된 몇 가지 입력 예시입니다.
CREATE TABLE agency (
agrecordid integer DEFAULT nextval(('agency0_pk_seq'::text)::regclass) NOT NULL,
agidcode1 character(20) NOT NULL,
...,
...,
agaddress1 character(40),
agtown character(40),
agfax2 character(20),
agemail character(20)
);
CREATE TABLE agency_contact (
recordid integer DEFAULT nextval(('agencon0_pk_seq'::text)::regclass) NOT NULL,
agencyid integer,
name character varying(35),
...,
...,
email2 character varying(30),
deptorperson character(1),
notes text
);
답변1
Awk 사용(그리고 출력을 캡처한다고 가정)예세 번째 필드):
awk '/CREATE TABLE/ {printf "%s\n", "drop table "$3" cascade;"}' datadump.sql
drop table agency cascade;
drop table agency_contact cascade;