PostgreSQL의 스키마 내부 테이블 이름 바꾸기

Bilal Shahid 2023년6월20일
PostgreSQL의 스키마 내부 테이블 이름 바꾸기

PostgreSQL에서 우리는 종종 CREATE 테이블을 사용하여 데이터를 저장하는 경향이 있습니다. 다음과 같은 테이블을 CREATE할 때:

create table cat (
    ID int,
    NAME text
)

테이블을 만들 때 이미 테이블에 NAME을 할당했습니다. 위의 예에서 우리는 테이블에 CAT라는 이름을 지정했으며 일단 수정되면 테이블이 만들어지면 RENAME에 다른 방법을 사용해야 할 것입니다.

CREATING 테이블 구문은 다음과 같습니다.

CREATE TABLE [Table_name] (
     [variable_names] [variable_types]
)

SCHEMA란 무엇입니까? SCHEMA에는 테이블, 뷰, 인덱스 및 DBMS에 포함될 수 있는 모든 것과 같은 데이터베이스 객체가 포함됩니다.

이제 테이블이 만들어지면 SCHEMA 내에서 테이블을 RENAME하는 방법을 알아보겠습니다.

PostgreSQL의 기본 이름 바꾸기 구문

PostgreSQL에서 이미 생성된 테이블의 이름을 바꾸려면 PostgreSQL 스키마 내에서 이미 만들어진 일부 개체를 변경하거나 수정하는 경향이 있는 ALTER 문을 사용할 수 있습니다. 테이블을 RENAME하는 경향이 있는 ALTER 문은 구문을 사용합니다.

ALTER TABLE [ IF EXISTS ] name
    RENAME TO new_name

자습서에서 여러 번 사용하는 CAT 테이블의 예를 들어 보겠습니다. 데이터베이스에 대한 SELECT 작업은 다음과 같은 결과를 반환합니다.

Select * from information_schema.tables
where table_name = 'cat'

출력:

"postgres'        "public"    "cat"        "BASE TABLE"

그런 다음 이 테이블에서 다음과 같이 RENAMING 작업을 수행할 수 있습니다.

alter table CAT rename to KITTEN

이제 데이터베이스에서 CAT를 조회하면 빈 결과가 반환됩니다. 그러나 KITTEN 조회는 CAT 테이블과 동일한 값으로 완벽하게 작동합니다.

"postgres"	"public"	"kitten"	"BASE TABLE"

따라서 ALTER 기능이 포함된 기본 RENAME은 완벽하게 작동합니다. 무언가를 사용하여 PSQL에서 이와 동일한 쿼리를 수행할 수 있습니다.

ALTER TABLE cat rename to Kitten;

그리고 성공하면 다음과 같이 출력을 반환합니다.

출력:

테이블 변경

PostgreSQL의 RENAMING 특정 SCHEMA 테이블 중 오류

구문 오류는 현재 존재하는 것과 다른 SCHEMA 내부에 만들어진 테이블에서 RENAME 작업을 수행하는 동안 가장 일반적인 오류 중 하나입니다.

예를 들어 다음과 같이 SCHEMA를 만드는 경향이 있는 경우:

CREATE SCHEMA tester;

그런 다음 그 안에 테이블을 만드십시오.

CREATE TABLE tester.dog (
   id INT,
   name TEXT
)

이제 테이블은 지정된 SCHEMA 내에 상주합니다. 그러나 다음과 같은 방법으로 RENAME 작업을 호출하면 오류가 반환됩니다.

ALTER TABLE tester.dog RENAME TO tester.doggy

출력:

ERROR:  syntax error at or near "."
LINE 1: ALTER TABLE tester.dog RENAME TO tester.doggy

왜? RENAME 텍스트를 보면 다음과 같이 말합니다.

ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
    RENAME [ COLUMN ] column_name TO new_column_name

new_column_name은 유효한 STRING이어야 합니다. 따라서 .과 같은 다른 문자를 사용할 수 없습니다. 및 ,STRING을 무효화할 수 있습니다.

따라서 다음과 같이 진행하면 됩니다.

alter table tester.dog rename to doggy;

완벽하게 잘 작동합니다. 이제 DOMAIN.DOG 테이블을 보면 RENAMED에서 DOMAIN.DOGGY로 변경되었을 것입니다.

이를 달성하는 또 다른 방법은 테이블을 위에서 본 무언가로 RENAME하는 경향이 있는 해결 방법을 사용하는 것입니다. 현재 SCHEMA로 작업하고 있기 때문에 .을 사용하는 동안 오류가 발생할 수 있습니다. SCHEMA 내부의 테이블을 지정하는 표기법.

이제 검색 경로에 대해 알아보겠습니다.

PostgreSQL의 ‘SCHEMA TABLES’ ‘RENAMING’에 대한 ‘SEARCH PATHS’

‘SEARCH PATHS’는 현재 참조되는 ‘SCHEMA’의 참조를 ‘SEARCH PATH’ 구문에 정의된 것으로 변경하는 경향이 있는 것으로 전역적으로 정의됩니다. 다음과 같은 구문을 사용합니다.

search_path (string)

그리고 CLIENT CONNECTION DEFAULTS에 정의되어 있습니다. 다음 쿼리를 실행하여 TABLERENAME을 지정하십시오.

SET search_path to tester;
alter table doggy rename to dogie

SETS search_pathDOMAIN 스키마에 연결한 다음 DOGI 테이블을 호출하면 테이블이 DOMAIN 스키마에서 참조된다는 것을 자동으로 알게 됩니다.

따라서 이 한 줄 쿼리는 DOMAIN.TABLE_NAME을 호출하는 것보다 SCHEMA 내부의 테이블을 참조하는 것이 훨씬 좋습니다.

SEARCH_PATH는 또한 쉼표로 구분된 여러 SCHEMA 이름을 가질 수 있으며 TABLE 또는 OBJECT를 호출할 때 정의된 각 SCHEMAS에서 확인됩니다.

또한 IF EXISTS 절을 추가하여 참조된 TABLE 또는 OBJECT가 존재하는지 확인한 다음 계속해서 실행할 수 있습니다.

다양한 옵션과 시나리오로 PostgreSQL에서 테이블을 RENAME하는 방법을 배웠기를 바랍니다. RENAME문의 다양한 변형이 많은 경우에 작동할 수 있습니다.

데이터베이스에서 작업할 때 어떤 SCHEMA가 참조되는지, 어떤 OBJECT가 호출되는지, 오류를 방지하고 피하기 위해 필요한 위치를 파악하십시오. 당사의 솔루션이 테이블을 RENAMED할 수 있는 다양한 방법을 이해하는 데 도움이 되기를 바랍니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

관련 문장 - PostgreSQL Table