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
에 정의되어 있습니다. 다음 쿼리를 실행하여 TABLE
의 RENAME
을 지정하십시오.
SET search_path to tester;
alter table doggy rename to dogie
SETS
search_path
를 DOMAIN
스키마에 연결한 다음 DOGI
테이블을 호출하면 테이블이 DOMAIN
스키마에서 참조된다는 것을 자동으로 알게 됩니다.
따라서 이 한 줄 쿼리는 DOMAIN.TABLE_NAME
을 호출하는 것보다 SCHEMA
내부의 테이블을 참조하는 것이 훨씬 좋습니다.
SEARCH_PATH
는 또한 쉼표로 구분된 여러 SCHEMA
이름을 가질 수 있으며 TABLE
또는 OBJECT
를 호출할 때 정의된 각 SCHEMAS
에서 확인됩니다.
또한 IF EXISTS
절을 추가하여 참조된 TABLE
또는 OBJECT
가 존재하는지 확인한 다음 계속해서 실행할 수 있습니다.
다양한 옵션과 시나리오로 PostgreSQL에서 테이블을 RENAME
하는 방법을 배웠기를 바랍니다. RENAME
문의 다양한 변형이 많은 경우에 작동할 수 있습니다.
데이터베이스에서 작업할 때 어떤 SCHEMA
가 참조되는지, 어떤 OBJECT
가 호출되는지, 오류를 방지하고 피하기 위해 필요한 위치를 파악하십시오. 당사의 솔루션이 테이블을 RENAMED
할 수 있는 다양한 방법을 이해하는 데 도움이 되기를 바랍니다.
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