Azure Database for PostgreSQL - 유연한 서버에서 azure_storage 확장을 사용하여 데이터 가져오기 및 내보내기
적용 대상: Azure Database for PostgreSQL - 유연한 서버
azure_storage 확장을 사용하면 Azure Storage 계정과 Azure Database for PostgreSQL 유연한 서버 인스턴스 간에 직접 여러 파일 형식으로 데이터를 가져오거나 내보낼 수 있습니다.
이 확장을 사용하여 데이터 내보내기 및 가져오기의 예는 이 문서의 예제 섹션에서 찾을 수 있습니다.
Azure Database for PostgreSQL 유연한 서버 인스턴스에서 확장을 사용하려면 확장을 허용하고 라이브러리를 로드하며 확장을 만들어야 합니다.azure_storage
절차 개요
- 확장의 사용자가
azure_storage
상호 작용할 Azure Storage 계정을 식별합니다. - 각 Azure Storage 계정의 Blob 서비스에 대한 요청에 사용할 권한 부여 유형을 결정합니다.
azure_storage
확장은 공유 키를 사용한 권한 부여 및 Microsoft Entra ID를 사용한 권한 부여를 지원합니다. 이러한 두 가지 유형의 권한 부여 중 Microsoft Entra ID는 공유 키보다 뛰어난 보안 및 사용 편의성을 제공하며 Microsoft에서 권장하는 것입니다. 각 경우에 필요한 필수 구성 요소를 충족하려면 해당 섹션의 지침을 따릅니다.- Microsoft Entra ID를 사용하여 권한 부여 또는
- 공유 키를 사용하는 권한 부여.
- 다음을 포함합니다
azure_storage
.shared_preload_libraries
- 다음을 포함합니다
azure_storage
.azure.extensions
- 기본 설정의 클라이언트(예: psql, pgAdmin 등)를 사용하여 Azure Database for PostgreSQL 유연한 서버 인스턴스의 모든 데이터베이스에 연결합니다. 확장을 사용하여
azure_storage
Azure Storage 계정의 인스턴스와 상호 작용할 수 있는 모든 SQL 개체(테이블, 형식, 함수, 뷰 등)를 만들려면 다음 문을 실행합니다.CREATE EXTENSION azure_storage;
- 함수를
azure_storage.account_*
사용하여 PostgreSQL 사용자 또는 역할이 확장으로 액세스할 수 있도록 하려는 Azure Storage 계정에 대한 참조를azure_storage
추가합니다. 이러한 참조에는 참조되는 Azure Storage 계정의 이름과 Azure Storage 계정과 상호 작용할 때 사용할 인증 유형이 포함됩니다. 선택한 인증 유형에 따라 Azure Storage 계정 액세스 키 또는 SAS 토큰과 같은 다른 매개 변수도 제공해야 할 수 있습니다.
Important
Azure Storage 계정 액세스 키를 제공해야 하는 인증 유형의 경우 Azure Storage 액세스 키가 스토리지 계정의 루트 암호와 유사합니다. 항상 그들을 보호하기 위해주의하십시오. Azure Key Vault를 사용하여 키를 안전하게 관리하고 회전합니다. azure_storage
확장은 역할의 멤버가 읽을 수 있는 테이블에 azure_storage.accounts
해당 키를 저장합니다 pg_read_all_data
.
역할이 부여된 azure_storage_admin
사용자는 다음 함수를 azure_storage.accounts
사용하여 테이블과 상호 작용할 수 있습니다.
- azure_storage.account_add
- azure_storage.account_list
- azure_storage.account_remove
- azure_storage.account_user_add
- azure_storage.account_user_remove
azure_storage_admin
역할은 기본적으로 역할에 부여됩니다azure_pg_admin
.
Microsoft Entra ID로 권한 부여를 사용하려면
- Azure Database for PostgreSQL 유연한 서버 인스턴스에서 시스템 할당 관리 ID 를 사용하도록 설정합니다.
- 시스템에서 할당된 관리 ID를 사용하도록 설정한 후 Azure Database for PostgreSQL 유연한 서버 인스턴스를 다시 시작합니다.
- Azure Storage 계정의 Blob 데이터에 액세스할 수 있는 RBAC(역할 기반 액세스 제어) 권한을 Azure Database for PostgreSQL 유연한 서버 인스턴스의 시스템 할당 관리 ID에 할당합니다.
공유 키로 권한 부여를 사용하려면
- Azure Storage 계정에 스토리지 계정 키 액세스 허용을 사용하도록 설정해야 합니다(즉, AllowSharedKeyAccess 속성을 false로 설정할 수 없습니다).
함수
azure_storage.account_add
확장에서 액세스할 수 있는 스토리지 계정 목록에 스토리지 계정 및 연결된 액세스 키를 추가할 수 있는 azure_storage
함수입니다.
이 함수의 이전 호출에서 이 스토리지 계정에 대한 참조를 이미 추가한 경우 새 항목을 추가하지 않고 기존 항목의 액세스 키를 업데이트합니다.
참고 항목
이 함수는 참조된 계정 이름이 있는지 또는 제공된 액세스 키를 사용하여 액세스할 수 있는지 여부를 확인하지 않습니다. 그러나 Azure Storage 계정에 적용되는 명명 유효성 검사 규칙에 따라 스토리지 계정의 이름이 유효한지 확인합니다.
azure_storage.account_add(account_name_p text, account_key_p text);
참조된 Azure Storage 계정의 이름과 인증 유형, 계정 유형 또는 스토리지 자격 증명과 같은 모든 필수 설정을 캡슐화하는 매개 변수를 허용하는 account_config
이 함수의 오버로드된 버전이 있습니다.
azure_storage.account_add(account_config jsonb);
사용 권한
의 azure_storage_admin
멤버여야 합니다.
인수
account_name_p
text
Blob, 파일, 큐 및 테이블과 같은 모든 개체를 포함하는 Azure Blob Storage 계정의 이름입니다. 스토리지 계정은 HTTPS를 통해 전 세계 어디에서나 액세스할 수 있는 고유한 네임스페이스를 제공합니다.
account_key_p
text
스토리지 계정에 대한 액세스 키 중 하나의 값입니다. Azure Blob Storage 액세스 키는 스토리지 계정의 루트 암호와 유사합니다. 항상 액세스 키를 보호해야 합니다. Azure Key Vault를 사용하여 키를 안전하게 관리하고 회전합니다. 계정 키는 슈퍼 사용자만 액세스할 수 있는 테이블에 저장됩니다. 역할이 부여된 사용자는 함수를 azure_storage_admin
통해 이 테이블과 상호 작용할 수 있습니다. 추가되는 스토리지 계정을 확인하려면 azure_storage.account_list 함수를 사용합니다.
account_config
jsonb
Azure Storage 계정의 이름 및 인증 유형, 계정 유형 또는 스토리지 자격 증명과 같은 모든 필수 설정입니다. 유틸리티 함수 azure_storage.account_options_managed_identity, azure_storage.account_options_credentials 또는 azure_storage.account_options 를 사용하여 이 인수로 전달되어야 하는 유효한 값을 만드는 것이 좋습니다.
반환 형식
VOID
azure_storage.account_options_managed_identity
유틸리티 함수 역할을 하는 함수로, azure_storage.account_add 내에서 매개 변수로 호출할 수 있으며 시스템 할당 관리 ID를 사용하여 Azure Storage 계정과 상호 작용할 때 인수에 유효한 값을 account_config
생성하는 데 유용합니다.
azure_storage.account_options_managed_identity(name text, type azure_storage.storage_type);
사용 권한
모든 사용자 또는 역할은 이 함수를 호출할 수 있습니다.
인수
이름
text
Blob, 파일, 큐 및 테이블과 같은 모든 개체를 포함하는 Azure Blob Storage 계정의 이름입니다. 스토리지 계정은 HTTPS를 통해 전 세계 어디에서나 액세스할 수 있는 고유한 네임스페이스를 제공합니다.
type
azure_storage.storage_type
지원되는 스토리지 유형 중 하나의 값입니다. 지원되는 값만 .blob
반환 형식
jsonb
azure_storage.account_options_credentials
유틸리티 함수 역할을 하는 함수로, azure_storage.account_add 내에서 매개 변수로 호출할 수 있으며 Azure Storage 액세스 키를 사용하여 Azure Storage 계정과 상호 작용할 때 인수에 유효한 값을 account_config
생성하는 데 유용합니다.
azure_storage.account_options_credentials(name text, credentials text, type azure_storage.storage_type);
사용 권한
모든 사용자 또는 역할은 이 함수를 호출할 수 있습니다.
인수
이름
text
Blob, 파일, 큐 및 테이블과 같은 모든 개체를 포함하는 Azure Blob Storage 계정의 이름입니다. 스토리지 계정은 HTTPS를 통해 전 세계 어디에서나 액세스할 수 있는 고유한 네임스페이스를 제공합니다.
credentials
text
스토리지 계정에 대한 액세스 키 중 하나의 값입니다. Azure Blob Storage 액세스 키는 스토리지 계정의 루트 암호와 유사합니다. 항상 액세스 키를 보호해야 합니다. Azure Key Vault를 사용하여 키를 안전하게 관리하고 회전합니다. 계정 키는 슈퍼 사용자만 액세스할 수 있는 테이블에 저장됩니다. 역할이 부여된 사용자는 함수를 azure_storage_admin
통해 이 테이블과 상호 작용할 수 있습니다. 추가되는 스토리지 계정을 확인하려면 azure_storage.account_list 함수를 사용합니다.
type
azure_storage.storage_type
지원되는 스토리지 유형 중 하나의 값입니다. 지원되는 값만 .blob
반환 형식
jsonb
azure_storage.account_options
유틸리티 함수 역할을 하는 함수로, azure_storage.account_add 내에서 매개 변수로 호출할 수 있으며 Azure Storage 액세스 키 또는 시스템 할당 관리 ID를 사용하여 Azure Storage 계정과 상호 작용할 때 인수에 유효한 값을 account_config
생성하는 데 유용합니다.
azure_storage.account_options(name text, auth_type azure_storage.auth_type, storage_type azure_storage.storage_type, credentials text DEFAULT NULL);
사용 권한
모든 사용자 또는 역할은 이 함수를 호출할 수 있습니다.
인수
이름
text
Blob, 파일, 큐 및 테이블과 같은 모든 개체를 포함하는 Azure Blob Storage 계정의 이름입니다. 스토리지 계정은 HTTPS를 통해 전 세계 어디에서나 액세스할 수 있는 고유한 네임스페이스를 제공합니다.
auth_type
azure_storage.auth_type
지원되는 스토리지 유형 중 하나의 값입니다. 지원되는 값 access-key
만 , 및 managed-identity
.
storage_type
azure_storage.storage_type
지원되는 스토리지 유형 중 하나의 값입니다. 지원되는 값만 .blob
credentials
text
스토리지 계정에 대한 액세스 키 중 하나의 값입니다. Azure Blob Storage 액세스 키는 스토리지 계정의 루트 암호와 유사합니다. 항상 액세스 키를 보호해야 합니다. Azure Key Vault를 사용하여 키를 안전하게 관리하고 회전합니다. 계정 키는 슈퍼 사용자만 액세스할 수 있는 테이블에 저장됩니다. 역할이 부여된 사용자는 함수를 azure_storage_admin
통해 이 테이블과 상호 작용할 수 있습니다. 추가되는 스토리지 계정을 확인하려면 azure_storage.account_list 함수를 사용합니다.
반환 형식
jsonb
azure_storage.account_remove
확장에서 액세스할 수 있는 스토리지 계정 목록에서 스토리지 계정 및 연결된 액세스 키를 제거할 수 있는 azure_storage
함수입니다.
azure_storage.account_remove(account_name_p text);
사용 권한
의 azure_storage_admin
멤버여야 합니다.
인수
account_name_p
text
Blob, 파일, 큐 및 테이블과 같은 모든 개체를 포함하는 Azure Blob Storage 계정의 이름입니다. 스토리지 계정은 HTTPS를 통해 전 세계 어디에서나 액세스할 수 있는 고유한 네임스페이스를 제공합니다.
반환 형식
VOID
azure_storage.account_user_add
확장에서 제공하는 azure_storage
함수를 통해 PostgreSQL 사용자 또는 역할 액세스 권한을 스토리지 계정에 부여할 수 있는 함수입니다.
참고 항목
이 함수의 실행은 이름이 첫 번째 인수로 전달되는 스토리지 계정이 azure_storage.account_add를 사용하여 이미 만들어졌으며 이름이 두 번째 인수로 전달된 사용자 또는 역할이 이미 있는 경우에만 성공합니다.
azure_storage.account_add(account_name_p text, user_p regrole);
사용 권한
의 azure_storage_admin
멤버여야 합니다.
인수
account_name_p
text
Blob, 파일, 큐 및 테이블과 같은 모든 개체를 포함하는 Azure Blob Storage 계정의 이름입니다. 스토리지 계정은 HTTPS를 통해 전 세계 어디에서나 액세스할 수 있는 고유한 네임스페이스를 제공합니다.
user_p
regrole
서버에서 사용할 수 있는 PostgreSQL 사용자 또는 역할의 이름입니다.
반환 형식
VOID
azure_storage.account_user_remove
확장에서 제공하는 azure_storage
함수를 통해 스토리지 계정에 대한 PostgreSQL 사용자 또는 역할 액세스를 해지할 수 있는 함수입니다.
참고 항목
이 함수의 실행은 이름이 첫 번째 인수로 전달되는 스토리지 계정이 azure_storage.account_add를 사용하여 이미 만들어졌으며 두 번째 인수로 이름이 전달된 사용자 또는 역할이 여전히 존재하는 경우에만 성공합니다.
서버에서 사용자 또는 역할이 삭제되면 실행하여 DROP USER | ROLE
Azure Storage 계정에 대한 모든 참조에 부여된 권한도 자동으로 제거됩니다.
azure_storage.account_user_remove(account_name_p text, user_p regrole);
사용 권한
의 azure_storage_admin
멤버여야 합니다.
인수
account_name_p
text
Blob, 파일, 큐 및 테이블과 같은 모든 개체를 포함하는 Azure Blob Storage 계정의 이름입니다. 스토리지 계정은 HTTPS를 통해 전 세계 어디에서나 액세스할 수 있는 고유한 네임스페이스를 제공합니다.
user_p
regrole
서버에서 사용할 수 있는 PostgreSQL 사용자 또는 역할의 이름입니다.
반환 형식
VOID
azure_storage.account_list
확장에서 제공하는 azure_storage
함수를 통해 해당 스토리지 계정과 상호 작용할 수 있는 권한이 부여된 PostgreSQL 사용자 또는 역할과 함께 azure_storage.account_add 함수를 통해 구성된 스토리지 계정의 이름을 나열하는 함수입니다.
azure_storage.account_list();
사용 권한
의 azure_storage_admin
멤버여야 합니다.
인수
이 함수는 인수를 취하지 않습니다.
반환 형식
TABLE(account_name text, auth_type azure_storage.auth_type, azure_storage_type azure_storage.storage_type, allowed_users regrole[])
Azure Storage 계정 목록이 추가된 4열 테이블, 각 계정과 상호 작용하는 데 사용되는 인증 유형, 스토리지 유형 및 액세스 권한이 부여된 PostgreSQL 사용자 또는 역할 목록이 있습니다.
azure_storage.blob_list
참조된 스토리지 계정의 지정된 컨테이너에 저장된 Blob의 이름 및 기타 속성(크기, lastModified, eTag, contentType, contentEncoding 및 contentHash)을 나열하는 함수입니다.
azure_storage.blob_list(account_name text, container_name text, prefix text DEFAULT ''::text);
사용 권한
azure_storage.account_user_add를 실행하여 이 함수를 호출하는 사용자 또는 역할을 참조된 허용 목록에 account_name
추가해야 합니다. 멤버 azure_storage_admin
는 azure_storage.account_add를 사용하여 참조가 추가된 모든 Azure Storage 계정을 자동으로 참조할 수 있습니다.
인수
account_name
text
Blob, 파일, 큐 및 테이블과 같은 모든 개체를 포함하는 Azure Blob Storage 계정의 이름입니다. 스토리지 계정은 HTTPS를 통해 전 세계 어디에서나 액세스할 수 있는 고유한 네임스페이스를 제공합니다.
container_name
text
컨테이너의 이름입니다. 컨테이너는 파일 시스템의 디렉터리와 비슷한 BLOB 세트를 구성합니다. 한 스토리지 계정에 포함될 수 있는 컨테이너 수에 제한이 없으며, 컨테이너에 저장될 수 있는 Blob 수에도 제한이 없습니다.
컨테이너 이름은 컨테이너 또는 해당 Blob의 주소를 지정하는 데 사용되는 고유한 URI의 일부를 구성하므로 유효한 DNS(도메인 이름 시스템) 이름이어야 합니다.
컨테이너 이름을 지정할 때는 다음 규칙을 따라야 합니다.
컨테이너의 URI는 https://myaccount.blob.core.windows.net/mycontainer
형식입니다.
prefix
text
지정된 경우 함수는 이름이 이 매개 변수에 제공된 값으로 시작하는 Blob을 반환합니다. 기본값은 빈 문자열입니다.
반환 형식
TABLE(path text, bytes bigint, last_modified timestamp with time zone, etag text, content_type text, content_encoding text, content_hash text)
Blob의 전체 이름 및 기타 속성을 포함하여 반환된 Blob당 하나의 레코드가 있는 테이블입니다.
경로
text
Blob의 전체 이름입니다.
bytes
bigint
Blob 크기(바이트)입니다.
last_modified
timestamp with time zone
Blob이 마지막으로 수정된 날짜 및 시간입니다. blob의 메타데이터 또는 속성에 대한 업데이트를 포함하여 Blob을 수정하는 모든 작업은 수행할 경우 Blob의 마지막 수정 시간이 변경됩니다.
etag
text
ETag 속성은 업데이트 중에 낙관적 동시성에 사용됩니다. 레코드가 마지막으로 업데이트된 시간을 저장하는 Timestamp라는 다른 속성이 있으므로 이 속성은 타임스탬프가 아닙니다. 예를 들어 엔터티를 로드하고 업데이트하려면 ETag가 현재 저장된 항목과 일치해야 합니다. 여러 사용자가 동일한 항목을 편집할 때 서로 변경 내용을 덮어쓰는 일이 없어야 하므로 적절한 ETag를 설정하는 것이 중요합니다.
content_type
text
Blob에 대해 지정된 콘텐츠 형식입니다. 기본 콘텐츠 형식은 .입니다 application/octet-stream
.
content_encoding
text
Azure Storage에서 정의할 수 있는 Blob의 Content-Encoding 속성입니다. 압축된 콘텐츠의 경우 속성을 Gzip으로 설정할 수 있습니다. 브라우저는 콘텐츠에 액세스하면 자동으로 콘텐츠의 압축을 풉니다.
content_hash
text
전송 중에 Blob의 무결성을 확인하는 데 사용되는 해시입니다. 이 헤더를 지정하면 스토리지 서비스는 제공된 해시를 콘텐츠에서 계산된 해시로 확인합니다. 두 해시가 일치하지 않으면 작업이 실패하고 오류 코드 400(잘못된 요청)이 표시됩니다.
azure_storage.blob_get
데이터를 가져올 수 있는 함수입니다. Azure Storage 계정의 Blob 컨테이너에서 파일을 다운로드합니다. 그런 다음, 콘텐츠를 행으로 변환하여 SQL 언어 구문을 사용하여 사용하고 처리할 수 있습니다. 이 함수는 가져오기 전에 Blob 컨테이너에서 가져온 데이터를 필터링하고 조작하는 지원을 추가합니다.
참고 항목
참조된 스토리지 계정에 대한 컨테이너에 액세스하기 전에 이 함수는 Azure Storage 계정에 적용되는 명명 유효성 검사 규칙에 따라 인수로 전달된 스토리지 계정 및 컨테이너의 이름이 유효한지 확인합니다. 둘 중 하나가 유효하지 않으면 오류가 발생합니다.
azure_storage.blob_get(account_name text, container_name text, path text, decoder text DEFAULT 'auto'::text, compression text DEFAULT 'auto'::text, options jsonb DEFAULT NULL::jsonb);
출력 형식 레코드를 편리하게 정의할 수 있는 매개 변수를 rec
허용하는 이 함수의 오버로드된 버전이 있습니다.
azure_storage.blob_get(account_name text, container_name text, path text, rec anyelement, decoder text DEFAULT 'auto'::text, compression text DEFAULT 'auto'::text, options jsonb DEFAULT NULL::jsonb);
사용 권한
azure_storage.account_user_add를 실행하여 이 함수를 호출하는 사용자 또는 역할을 참조된 허용 목록에 account_name
추가해야 합니다. 멤버 azure_storage_admin
는 azure_storage.account_add를 사용하여 참조가 추가된 모든 Azure Storage 계정을 자동으로 참조할 수 있습니다.
인수
account_name
text
Blob, 파일, 큐 및 테이블과 같은 모든 개체를 포함하는 Azure Blob Storage 계정의 이름입니다. 스토리지 계정은 HTTPS를 통해 전 세계 어디에서나 액세스할 수 있는 고유한 네임스페이스를 제공합니다.
container_name
text
컨테이너의 이름입니다. 컨테이너는 파일 시스템의 디렉터리와 비슷한 BLOB 세트를 구성합니다. 한 스토리지 계정에 포함될 수 있는 컨테이너 수에 제한이 없으며, 컨테이너에 저장될 수 있는 Blob 수에도 제한이 없습니다.
컨테이너 이름은 컨테이너 또는 해당 Blob의 주소를 지정하는 데 사용되는 고유한 URI의 일부를 구성하므로 유효한 DNS(도메인 이름 시스템) 이름이어야 합니다.
컨테이너 이름을 지정할 때는 다음 규칙을 따라야 합니다.
컨테이너의 URI는 https://myaccount.blob.core.windows.net/mycontainer
형식입니다.
경로
text
Blob의 전체 이름입니다.
rec
anyelement
레코드 출력 구조의 정의입니다.
디코더
text
Blob 형식의 사양입니다. 다음 값 중 어느 값으로든 설정할 수 있습니다.
형식 | 기본값 | 설명 |
---|---|---|
auto |
true |
Blob 이름에 할당된 마지막 문자 계열을 기준으로 값을 유추합니다. Blob 이름이 로 .csv 끝나거나 .csv.gz 끝나는 경우 .csv 또는 .tsv.gz 다음으로 .tsv 끝나는 경우 .를 가정합니다.tsv 로 끝나는 .json 경우 , .json.gz , .xml , .xml.gz .txt 또는 .txt.gz , 를 가정합니다.text |
csv |
PostgreSQL COPY에서 사용하는 쉼표로 구분된 값 형식입니다. | |
tsv |
탭으로 구분된 값, 기본 PostgreSQL COPY 형식입니다. | |
binary |
이진 PostgreSQL COPY 형식입니다. | |
text | xml | json |
단일 텍스트 값을 포함하는 파일입니다. |
compression
text
압축 형식의 사양입니다. 다음 값 중 어느 값으로든 설정할 수 있습니다.
형식 | 기본값 | 설명 |
---|---|---|
auto |
true |
Blob 이름에 할당된 마지막 문자 계열을 기준으로 값을 유추합니다. Blob 이름이 끝나는 .gz gzip 경우 . 그렇지 않으면 .none |
gzip |
gzip 디코더를 사용하여 Blob의 압축을 풀도록 강제합니다. | |
none |
강제로 Blob을 압축 해제가 필요하지 않은 Blob으로 처리합니다. |
확장은 다른 압축 형식을 지원하지 않습니다.
options
jsonb
사용자 지정 헤더, 사용자 지정 구분 기호, 이스케이프 문자 등의 처리를 정의하는 설정입니다. options
는 PostgreSQL에서 명령에 전달할 수 있는 옵션이 해당 동작에 미치는 영향과 유사한 방식으로 이 함수의 COPY
동작에 영향을 줍니다.
반환 형식
SETOF record
SETOF anyelement
azure_storage.blob_put
Azure Storage 계정의 Blob 컨테이너에 파일을 업로드하여 데이터를 내보낼 수 있는 함수입니다. 파일의 내용은 PostgreSQL의 행에서 생성됩니다.
참고 항목
참조된 스토리지 계정에 대한 컨테이너에 액세스하기 전에 이 함수는 Azure Storage 계정에 적용되는 명명 유효성 검사 규칙에 따라 인수로 전달된 스토리지 계정 및 컨테이너의 이름이 유효한지 확인합니다. 둘 중 하나가 유효하지 않으면 오류가 발생합니다.
azure_storage.blob_put(account_name text, container_name text, path text, tuple record)
RETURNS VOID;
매개 변수의 확장 path
에서 유추할 수 없거나 유추된 인코더를 재정의할 때 사용할 인코더를 지정할 수 있는 매개 변수를 포함하는 encoder
오버로드된 버전의 함수가 있습니다.
azure_storage.blob_put(account_name text, container_name text, path text, tuple record, encoder text)
RETURNS VOID;
매개 변수의 확장 path
에서 유추할 수 없거나 유추된 매개 변수를 재정의할 때 사용할 압축을 지정할 수 있는 매개 변수도 포함된 compression
오버로드된 버전의 함수가 있습니다.
azure_storage.blob_put(account_name text, container_name text, path text, tuple record, encoder text, compression text)
RETURNS VOID;
사용자 지정 헤더, 사용자 지정 구분 기호, 이스케이프 문자 등을 options
처리하기 위한 매개 변수도 포함하는 options
오버로드된 버전의 함수가 PostgreSQL의 명령에 전달할 COPY
수 있는 옵션과 비슷한 방식으로 작동합니다.
azure_storage.blob_put(account_name text, container_name text, path text, tuple record, encoder text, compression text, options jsonb)
RETURNS VOID;
사용 권한
azure_storage.account_user_add를 실행하여 이 함수를 호출하는 사용자 또는 역할을 참조된 허용 목록에 account_name
추가해야 합니다. 멤버 azure_storage_admin
는 azure_storage.account_add를 사용하여 참조가 추가된 모든 Azure Storage 계정을 자동으로 참조할 수 있습니다.
인수
account_name
text
Blob, 파일, 큐 및 테이블과 같은 모든 개체를 포함하는 Azure Blob Storage 계정의 이름입니다. 스토리지 계정은 HTTPS를 통해 전 세계 어디에서나 액세스할 수 있는 고유한 네임스페이스를 제공합니다.
container_name
text
컨테이너의 이름입니다. 컨테이너는 파일 시스템의 디렉터리와 비슷한 BLOB 세트를 구성합니다. 한 스토리지 계정에 포함될 수 있는 컨테이너 수에 제한이 없으며, 컨테이너에 저장될 수 있는 Blob 수에도 제한이 없습니다.
컨테이너 이름은 컨테이너 또는 해당 Blob의 주소를 지정하는 데 사용되는 고유한 URI의 일부를 구성하므로 유효한 DNS(도메인 이름 시스템) 이름이어야 합니다.
컨테이너 이름을 지정할 때는 다음 규칙을 따라야 합니다.
컨테이너의 URI는 https://myaccount.blob.core.windows.net/mycontainer
형식입니다.
경로
text
Blob의 전체 이름입니다.
tuple
record
레코드 출력 구조의 정의입니다.
인코더
text
Blob 형식의 사양입니다. 다음 값 중 어느 값으로든 설정할 수 있습니다.
형식 | 기본값 | 설명 |
---|---|---|
auto |
true |
Blob 이름에 할당된 마지막 문자 계열을 기준으로 값을 유추합니다. Blob 이름이 로 .csv 끝나거나 .csv.gz 끝나는 경우 .csv 또는 .tsv.gz 다음으로 .tsv 끝나는 경우 .를 가정합니다.tsv 로 끝나는 .json 경우 , .json.gz , .xml , .xml.gz .txt 또는 .txt.gz , 를 가정합니다.text |
csv |
PostgreSQL COPY에서 사용하는 쉼표로 구분된 값 형식입니다. | |
tsv |
탭으로 구분된 값, 기본 PostgreSQL COPY 형식입니다. | |
binary |
이진 PostgreSQL COPY 형식입니다. | |
text | xml | json |
단일 텍스트 값을 포함하는 파일입니다. |
compression
text
압축 형식의 사양입니다. 다음 값 중 어느 값으로든 설정할 수 있습니다.
형식 | 기본값 | 설명 |
---|---|---|
auto |
true |
Blob 이름에 할당된 마지막 문자 계열을 기준으로 값을 유추합니다. Blob 이름이 끝나는 .gz gzip 경우 . 그렇지 않으면 .none |
gzip |
gzip 디코더를 사용하여 Blob의 압축을 풀도록 강제합니다. | |
none |
강제로 Blob을 압축 해제가 필요하지 않은 Blob으로 처리합니다. |
확장은 다른 압축 형식을 지원하지 않습니다.
options
jsonb
사용자 지정 헤더, 사용자 지정 구분 기호, 이스케이프 문자 등의 처리를 정의하는 설정입니다. options
는 PostgreSQL에서 명령에 전달할 수 있는 옵션이 해당 동작에 미치는 영향과 유사한 방식으로 이 함수의 COPY
동작에 영향을 줍니다.
반환 형식
VOID
azure_storage.options_csv_get
유틸리티 함수 역할을 하는 함수이며, 이 함수는 내에서 blob_get
매개 변수로 호출될 수 있으며 csv 파일의 콘텐츠를 디코딩하는 데 유용합니다.
azure_storage.options_csv_get(delimiter text DEFAULT NULL::text, null_string text DEFAULT NULL::text, header boolean DEFAULT NULL::boolean, quote text DEFAULT NULL::text, escape text DEFAULT NULL::text, force_not_null text[] DEFAULT NULL::text[], force_null text[] DEFAULT NULL::text[], content_encoding text DEFAULT NULL::text);
사용 권한
모든 사용자 또는 역할은 이 함수를 호출할 수 있습니다.
인수
delimiter
text
파일의 각 행(줄) 내에서 열을 구분하는 문자입니다. 단일 1 바이트 문자여야 합니다. 이 함수는 임의의 수의 문자 구분 기호를 지원하지만 1 바이트 이상의 문자를 사용하려고 하면 PostgreSQL에서 오류를 다시 COPY delimiter must be a single one-byte character
보고합니다.
null_string
text
null 값을 나타내는 문자열입니다. 기본값은 텍스트 형식의 \N(백슬래시-N)이며, 따옴표로 묶이지 않은 CSV 형식의 빈 문자열입니다. null을 빈 문자열과 구분하지 않으려는 경우 텍스트 형식에서도 빈 문자열을 선호할 수 있습니다.
헤더
boolean
파일에 파일의 각 열 이름이 포함된 헤더 줄이 포함되어 있는지를 나타내는 플래그입니다. 출력 시 초기 줄에는 테이블의 열 이름이 포함됩니다.
견적
text
데이터 값을 따옴표로 묶을 때 사용할 따옴표 문자입니다. 기본값은 큰따옴표입니다. 단일 1 바이트 문자여야 합니다. 이 함수는 임의의 수의 문자 구분 기호를 지원하지만 1 바이트 이상의 문자를 사용하려고 하면 PostgreSQL에서 오류를 다시 COPY quote must be a single one-byte character
보고합니다.
escape
text
QUOTE 값과 일치하는 데이터 문자 앞에 표시되어야 하는 문자입니다. 기본값은 QUOTE 값과 동일합니다(따옴표 문자가 데이터에 표시되는 경우 큰따옴표가 되도록). 단일 1 바이트 문자여야 합니다. 이 함수는 임의의 수의 문자 구분 기호를 지원하지만 1 바이트 이상의 문자를 사용하려고 하면 PostgreSQL에서 오류를 다시 COPY escape must be a single one-byte character
보고합니다.
force_not_null
text[]
지정된 열의 값과 null 문자열을 일치하지 않습니다. null 문자열이 비어 있는 기본적인 사례에서는 빈 값을 따옴표로 묶지 않더라도 null이 아닌 길이가 0인 문자열로 읽습니다.
force_null
text[]
따옴표로 묶어도 지정된 열의 값을 null 문자열과 일치시키고 일치 항목이 발견되면 값을 NULL로 설정합니다. null 문자열이 비어 있는 기본적인 사례에서는 따옴표로 묶은 빈 문자열을 NULL로 변환합니다.
content_encoding
text
파일이 인코딩되는 인코딩의 이름입니다. 이 옵션을 생략하면 현재 클라이언트 인코딩이 사용됩니다.
반환 형식
jsonb
azure_storage.options_copy
유틸리티 함수 역할을 하는 함수이며, 이 함수는 내에서 blob_get
매개 변수로 호출될 수 있습니다. options_csv_get, options_tsv 및 options_binary 도우미 함수로 작동합니다.
azure_storage.options_copy(delimiter text DEFAULT NULL::text, null_string text DEFAULT NULL::text, header boolean DEFAULT NULL::boolean, quote text DEFAULT NULL::text, escape text DEFAULT NULL::text, force_quote text[] DEFAULT NULL::text[], force_not_null text[] DEFAULT NULL::text[], force_null text[] DEFAULT NULL::text[], content_encoding text DEFAULT NULL::text);
사용 권한
모든 사용자 또는 역할은 이 함수를 호출할 수 있습니다.
인수
delimiter
text
파일의 각 행(줄) 내에서 열을 구분하는 문자입니다. 단일 1 바이트 문자여야 합니다. 이 함수는 임의의 수의 문자 구분 기호를 지원하지만 1 바이트 이상의 문자를 사용하려고 하면 PostgreSQL에서 오류를 다시 COPY delimiter must be a single one-byte character
보고합니다.
null_string
text
null 값을 나타내는 문자열입니다. 기본값은 텍스트 형식의 \N(백슬래시-N)이며, 따옴표로 묶이지 않은 CSV 형식의 빈 문자열입니다. null을 빈 문자열과 구분하지 않으려는 경우 텍스트 형식에서도 빈 문자열을 선호할 수 있습니다.
헤더
boolean
파일에 파일의 각 열 이름이 포함된 헤더 줄이 포함되어 있는지를 나타내는 플래그입니다. 출력 시 초기 줄에는 테이블의 열 이름이 포함됩니다.
견적
text
데이터 값을 따옴표로 묶을 때 사용할 따옴표 문자입니다. 기본값은 큰따옴표입니다. 단일 1 바이트 문자여야 합니다. 이 함수는 임의의 수의 문자 구분 기호를 지원하지만 1 바이트 이상의 문자를 사용하려고 하면 PostgreSQL에서 오류를 다시 COPY quote must be a single one-byte character
보고합니다.
escape
text
QUOTE 값과 일치하는 데이터 문자 앞에 표시되어야 하는 문자입니다. 기본값은 QUOTE 값과 동일합니다(따옴표 문자가 데이터에 표시되는 경우 큰따옴표가 되도록). 단일 1 바이트 문자여야 합니다. 이 함수는 임의의 수의 문자 구분 기호를 지원하지만 1 바이트 이상의 문자를 사용하려고 하면 PostgreSQL에서 오류를 다시 COPY escape must be a single one-byte character
보고합니다.
force_quote
text[]
지정된 각 열의 NULL이 아닌 모든 값에 따옴표를 사용합니다. NULL 출력에는 절대 따옴표가 사용되지 않습니다. *를 지정하면 모든 열에서 NULL이 아닌 값이 따옴표로 묶입니다.
force_not_null
text[]
지정된 열의 값과 null 문자열을 일치하지 않습니다. null 문자열이 비어 있는 기본적인 사례에서는 빈 값을 따옴표로 묶지 않더라도 null이 아닌 길이가 0인 문자열로 읽습니다.
force_null
text[]
따옴표로 묶어도 지정된 열의 값을 null 문자열과 일치시키고 일치 항목이 발견되면 값을 NULL로 설정합니다. null 문자열이 비어 있는 기본적인 사례에서는 따옴표로 묶은 빈 문자열을 NULL로 변환합니다.
content_encoding
text
파일이 인코딩되는 인코딩의 이름입니다. 이 옵션을 생략하면 현재 클라이언트 인코딩이 사용됩니다.
반환 형식
jsonb
azure_storage.options_tsv
유틸리티 함수 역할을 하는 함수이며, 이 함수는 내에서 blob_get
매개 변수로 호출할 수 있으며 tsv 파일의 콘텐츠를 디코딩하는 데 유용합니다.
azure_storage.options_tsv(delimiter text DEFAULT NULL::text, null_string text DEFAULT NULL::text, content_encoding text DEFAULT NULL::text);
사용 권한
모든 사용자 또는 역할은 이 함수를 호출할 수 있습니다.
인수
delimiter
text
파일의 각 행(줄) 내에서 열을 구분하는 문자입니다. 단일 1 바이트 문자여야 합니다. 이 함수는 임의의 수의 문자 구분 기호를 지원하지만 1 바이트 이상의 문자를 사용하려고 하면 PostgreSQL에서 오류를 다시 COPY delimiter must be a single one-byte character
보고합니다.
null_string
text
null 값을 나타내는 문자열입니다. 기본값은 텍스트 형식의 \N(백슬래시-N)이며, 따옴표로 묶이지 않은 CSV 형식의 빈 문자열입니다. null을 빈 문자열과 구분하지 않으려는 경우 텍스트 형식에서도 빈 문자열을 선호할 수 있습니다.
content_encoding
text
파일이 인코딩되는 인코딩의 이름입니다. 이 옵션을 생략하면 현재 클라이언트 인코딩이 사용됩니다.
반환 형식
jsonb
azure_storage.options_binary
유틸리티 함수 역할을 하는 함수이며, 이 함수 내에서 blob_get
매개 변수로 호출할 수 있으며 이진 파일의 콘텐츠를 디코딩하는 데 유용합니다.
azure_storage.options_binary(content_encoding text DEFAULT NULL::text);
사용 권한
모든 사용자 또는 역할은 이 함수를 호출할 수 있습니다.
인수
content_encoding
text
파일이 인코딩되는 인코딩의 이름입니다. 이 옵션을 생략하면 현재 클라이언트 인코딩이 사용됩니다.
반환 형식
jsonb
가능한 오류
오류: azure_storage: 권한만으로는 요청된 작업을 수행할 수 없습니다.
Azure Storage(azure_storage.blob_list
azure_storage.blob_get
또는azure_storage.blob_put
)와 상호 작용하는 함수를 실행할 때 시스템 할당 관리 ID에는 적절한 데이터 평면 역할 또는 권한이 부여되지 않습니다(일반적으로 azure_storage.blob_put에 대한 스토리지 Blob 데이터 기여자 최소 및 다른 두 함수에 대한 스토리지 Blob 데이터 판독기 최소값).
필요한 최소 사용 권한을 이미 부여했지만 아직 적용되지 않은 경우도 있습니다. 이러한 권한이 전파될 때까지 몇 분 정도 걸릴 수 있습니다.
오류: azure_storage: 스토리지 자격 증명 누락
Azure Storage(azure_storage.blob_list
azure_storage.blob_get
또는azure_storage.blob_put
)와 상호 작용하는 함수 및 확장을 스토리지 계정으로 인증하려는 자격 증명을 실행하는 경우 다음을 사용하여 azure_storage.account_add
등록되지 않습니다.
오류: azure_storage: 연결하는 동안 내부 오류
유연한 서버 인스턴스가 대상 스토리지 계정에 연결할 수 없는 경우 다음과 같은 경우에 발생할 수 있습니다.
- 스토리지 계정이 없습니다.
- 네트워킹 구성은 유연한 서버 인스턴스에서 시작된 트래픽이 스토리지 계정에 도달하는 것을 허용하지 않습니다. 예를 들어 유연한 서버 인스턴스가 공용 액세스 네트워킹을 사용하여 배포되고 스토리지 계정은 프라이빗 엔드포인트를 통해서만 액세스할 수 있습니다.
유연한 서버 인스턴스에서 시스템 할당 관리 ID를 사용하도록 설정하지 않은 경우
오류: azure_storage: 스토리지 자격 증명의 형식이 잘못되었습니다.
유연한 서버 인스턴스에서 시스템 할당 관리 ID를 사용하도록 설정했지만 사용하도록 설정한 후 서버가 다시 시작되지 않은 경우
오류: azure_storage: 현재 사용자 <user_or_role> 스토리지 계정 <account_name 사용할 수 없습니다.>
Azure Storage(azure_storage.blob_list
azure_storage.blob_get
또는azure_storage.blob_put
)와 상호 작용하는 함수를 멤버 azure_storage_admin
가 아니고 권한이 azure_storage.account_user_add
부여되지 않은 사용자 또는 역할과 상호 작용하는 경우 참조된 스토리지 계정을 사용합니다.
예제
다음 예제를 실행하려면 먼저 다음 필수 조건을 충족해야 합니다.
- Azure Storage 계정을 만듭니다.
Azure Storage 계정을 만들려면 아직 계정이 없는 경우 ,
<location>
<account_name>
및 값을<resource_group>
사용자 지정하고<container_name>
다음 Azure CLI 명령을 실행합니다.resource_group=<resource_group> location=<location> storage_account=<account_name> blob_container=<container_name> az group create --name $resource_group --location $location az storage account create --resource-group $resource_group --name $storage_account --location $location --sku Standard_LRS --kind BlobStorage --public-network-access enabled --access-tier hot
- Blob 컨테이너를 만듭니다.
Blob 컨테이너를 만들려면 다음 Azure CLI를 실행합니다.
az storage container create --account-name $storage_account --name $blob_container -o tsv
- 스토리지 계정에 할당된 두 개의 액세스 키 중 하나를 가져옵니다. 이후 단계에서 azure_storage.account_add에 인수로 전달해야 하므로 access_key 값을 복사해야 합니다.
두 액세스 키 중 첫 번째 키를 가져오려면 다음 Azure CLI 명령을 실행합니다.
access_key=$(az storage account keys list --resource-group $resource_group --account-name $storage_account --query [0].value) echo "Following is the value of your access key:" echo $access_key
- 예제 중에 사용되는 데이터 집합을 사용하여 파일을 다운로드하고 Blob 컨테이너에 업로드합니다.
데이터 집합을 사용하여 파일을 다운로드하려면 다음 Azure CLI 명령을 실행합니다.
mkdir --parents azure_storage_examples cd azure_storage_examples curl -O https://examples.citusdata.com/tutorial/events.csv gzip -k events.csv cp events.csv events_blob_without_extension cp events.csv events_pipe.csv cp events.csv.gz events_compressed sed -i 's/,/|/g' events_pipe.csv az storage blob upload-batch --account-name $storage_account --destination $blob_container --source . --pattern "events*" --account-key $access_key --overwrite --output none --only-show-errors
참고 항목
특정 스토리지 계정에 대해 컨테이너 또는 컨테이너에 저장된 Blob을 나열할 수 있지만 PostgreSQL 사용자 또는 역할에 azure_storage.account_user_add를 사용하여 해당 스토리지 계정에 대한 참조에 대한 권한이 부여된 경우에만 나열할 수 있습니다. 역할의 azure_storage_admin
멤버는 azure_storage.account_add를 사용하여 추가된 모든 Azure Storage 계정에 대해 이 권한을 부여합니다. 기본적으로 역할의 azure_pg_admin
멤버만 부여 azure_storage_admin
됩니다.
데이터가 로드되는 테이블 만들기
스토리지 계정에 업로드한 CSV 파일의 콘텐츠를 가져오는 테이블을 만들어 보겠습니다. 이렇게 하려면 기본 설정의 클라이언트를 사용하여 PgAdmin
psql
Azure Database for PostgreSQL 유연한 서버의 인스턴스에 연결하고 다음 문을 실행합니다.
CREATE TABLE IF NOT EXISTS events
(
event_id bigint
,event_type text
,event_public boolean
,repo_id bigint
,payload jsonb
,repo jsonb
,user_id bigint
,org jsonb
,created_at timestamp without time zone
);
스토리지 계정의 액세스 키 추가
이 예제에서는 Azure Database for PostgreSQL 유연한 서버 인스턴스의 확장에서 제공하는 azure_storage
기능을 통해 콘텐츠에 액세스하는 데 필요한 해당 스토리지 계정의 액세스 키와 함께 스토리지 계정에 대한 참조를 추가하는 방법을 보여 줍니다.
<account_name>
은 스토리지 계정의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 storage_account 환경 변수에 설정한 값과 일치해야 합니다.
마찬가지로 스토리지 <access_key>
계정에서 가져온 값으로 설정해야 합니다.
SELECT azure_storage.account_add('<account_name>', '<access_key>');
팁
Azure Portal에서 스토리지 계정 이름 및 해당 액세스 키 중 하나를 검색하려면 스토리지 계정을 검색하고, 리소스 메뉴에서 액세스 키를 선택하고, Storage 계정 이름을 복사하고, key1 섹션에서 키를 복사합니다(먼저 키 옆에 표시를 선택해야 합니다).
스토리지 계정에 대한 참조 제거
이 예제에서는 현재 데이터베이스의 사용자가 확장 기능을 사용하여 azure_storage
해당 스토리지 계정에 액세스할 수 없도록 스토리지 계정에 대한 참조를 제거하는 방법을 보여 줍니다.
<account_name>
은 스토리지 계정의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 storage_account 환경 변수에 설정한 값과 일치해야 합니다.
SELECT azure_storage.account_remove('<account_name>');
Azure Blob Storage 참조에서 사용자 또는 역할에 대한 액세스 권한 부여
이 예제에서는 이러한 PostgreSQL 사용자가 확장을 사용하여 azure_storage
참조된 Azure Storage 계정에서 호스트하는 컨테이너에 저장된 Blob에 액세스할 수 있도록 명명<regular_user>
된 사용자 또는 역할에 대한 액세스 권한을 부여하는 방법을 보여 줍니다.
<account_name>
은 스토리지 계정의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 storage_account 환경 변수에 설정한 값과 일치해야 합니다.
<regular_user>
은 기존 사용자 또는 역할의 이름으로 설정해야 합니다.
SELECT * FROM azure_storage.account_user_add('<account_name>', '<regular_user>');
Azure Storage 계정에 대한 모든 참조 나열
이 예제에서는 확장이 이 데이터베이스에서 참조할 수 있는 Azure Storage 계정 azure_storage
과 각 스토리지 계정에 액세스하는 데 사용되는 인증 유형, azure_storage.account_user_add 함수를 통해 권한이 부여된 사용자 또는 역할과 함께 확장에서 제공하는 기능을 통해 해당 Azure Storage 계정에 액세스하는 방법을 보여 줍니다.
SELECT * FROM azure_storage.account_list();
Azure Blob Storage 참조의 사용자 또는 역할에서 액세스 취소
이 예제에서는 이러한 PostgreSQL 사용자가 확장을 사용하여 azure_storage
참조된 Azure Storage 계정에서 호스트하는 컨테이너에 저장된 Blob에 액세스할 수 없도록 사용자 또는 역할<regular_user>
에서 액세스를 취소하는 방법을 보여 줍니다.
<account_name>
은 스토리지 계정의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 storage_account 환경 변수에 설정한 값과 일치해야 합니다.
<regular_user>
은 기존 사용자 또는 역할의 이름으로 설정해야 합니다.
SELECT * FROM azure_storage.account_user_remove('<account_name>', '<regular_user>');
컨테이너의 모든 Blob 나열
이 예제에서는 스토리지 계정<account_name>
의 컨테이너 <container_name>
내에 있는 모든 기존 Blob을 나열하는 방법을 보여 줍니다.
<account_name>
은 스토리지 계정의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 storage_account 환경 변수에 설정한 값과 일치해야 합니다.
<container_name>
은 Blob 컨테이너의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 blob_container 환경 변수로 설정한 값과 일치해야 합니다.
SELECT * FROM azure_storage.blob_list('<account_name>','<container_name>');
특정 Blob 이름 접두사를 사용하여 개체 나열
이 예제에서는 Blob 이름이 로 시작하는 스토리지 계정의 컨테이너 <container_name>
내에 있는 모든 기존 Blob을 나열하는 방법을 보여 줍니다<blob_name_prefix>
.<account_name>
<account_name>
은 스토리지 계정의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 storage_account 환경 변수에 설정한 값과 일치해야 합니다.
<container_name>
은 Blob 컨테이너의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 blob_container 환경 변수로 설정한 값과 일치해야 합니다.
<blob_name_prefix>
은 Blob을 열거할 접두사로 설정하여 이름에 포함해야 합니다. 모든 Blob을 반환하려는 경우 이 매개 변수를 빈 문자열로 설정하거나 이 매개 변수의 값을 지정하지 않을 수 있습니다. 이 경우 값은 기본값이 빈 문자열로 설정됩니다.
SELECT * FROM azure_storage.blob_list('<account_name>','<container_name>','<blob_name_prefix>');
또는 다음 구문을 사용할 수 있습니다.
SELECT * FROM azure_storage.blob_list('<account_name>','<container_name>') WHERE path LIKE '<blob_name_prefix>%';
컨테이너의 Blob에서 콘텐츠 읽기
이 함수는 blob_get
스토리지의 참조된 컨테이너 <container_name>
에서 특정 Blob(events.csv
이 경우)의 내용을 검색합니다<account_name>
. 데이터를 구문 분석하는 방법을 알기 위해 blob_get
폼 NULL::table_name
의 값을 전달할 수 있습니다. 여기서 table_name
스키마가 읽는 Blob의 스키마와 일치하는 테이블을 참조합니다. 이 예제에서는 처음에 만든 테이블을 참조 events
합니다.
<account_name>
은 스토리지 계정의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 storage_account 환경 변수에 설정한 값과 일치해야 합니다.
<container_name>
은 Blob 컨테이너의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 blob_container 환경 변수로 설정한 값과 일치해야 합니다.
<blob_name>
은 내용을 읽으려는 Blob의 전체 경로로 설정해야 합니다.
SELECT * FROM azure_storage.blob_get
('<account_name>'
,'<container_name>'
,'events.csv'
, NULL::events)
LIMIT 5;
또는 blob_get 함수 뒤의 절을 사용하여 AS
결과의 스키마를 명시적으로 정의할 수 있습니다.
SELECT * FROM azure_storage.blob_get('<account_name>','<container_name>','events.csv.gz')
AS res (
event_id BIGINT
,event_type TEXT
,event_public BOOLEAN
,repo_id BIGINT
,payload JSONB
,repo JSONB
,user_id BIGINT
,org JSONB
,created_at TIMESTAMP WITHOUT TIME ZONE)
LIMIT 5;
디코더 옵션 사용
이 예제에서는 옵션의 사용을 보여 줍니다 decoder
. 일반적으로 파일의 확장명을 보면 형식을 유추할 수 있지만, 파일 콘텐츠에 일치하는 확장명이 없는 경우에는 디코더 인수를 전달하면 됩니다.
<account_name>
은 스토리지 계정의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 storage_account 환경 변수에 설정한 값과 일치해야 합니다.
<container_name>
은 Blob 컨테이너의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 blob_container 환경 변수로 설정한 값과 일치해야 합니다.
SELECT * FROM azure_storage.blob_get
('<account_name>'
,'<container_name>'
,'events_blob_without_extension'
, NULL::events
, decoder := 'csv')
LIMIT 5;
디코더 옵션과 함께 압축 사용
이 예제에서는 이름이 .gz 확장으로 끝나지 않는 gzip 압축 Blob에서 gzip 압축을 사용하여 적용하는 방법을 보여줍니다.
<account_name>
은 스토리지 계정의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 storage_account 환경 변수에 설정한 값과 일치해야 합니다.
<container_name>
은 Blob 컨테이너의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 blob_container 환경 변수로 설정한 값과 일치해야 합니다.
SELECT * FROM azure_storage.blob_get
('<account_name>'
,'<container_name>'
,'events_compressed'
, NULL::events
, decoder := 'csv'
, compression := 'gzip')
LIMIT 5;
csv 형식 개체에서 로드하기 전에 필터링된 콘텐츠 가져오기 및 수정
이 예제에서는 BLOB에서 가져온 콘텐츠를 SQL 테이블에 로드하기 전에 필터링하고 수정할 수 있는 가능성을 보여 줍니다.
<account_name>
은 스토리지 계정의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 storage_account 환경 변수에 설정한 값과 일치해야 합니다.
<container_name>
은 Blob 컨테이너의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 blob_container 환경 변수로 설정한 값과 일치해야 합니다.
SELECT concat('P-',event_id::text) FROM azure_storage.blob_get
('<account_name>'
,'<container_name>'
,'events.csv'
, NULL::events)
WHERE event_type='PushEvent'
LIMIT 5;
헤더, 사용자 지정 구분 기호, 이스케이프 문자를 사용하여 파일의 콘텐츠 쿼리
이 예제에서는 options_copy 결과를 options
인수에 전달하여 사용자 지정 구분 기호 및 이스케이프 문자를 사용하는 방법을 보여 줍니다.
<account_name>
은 스토리지 계정의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 storage_account 환경 변수에 설정한 값과 일치해야 합니다.
<container_name>
은 Blob 컨테이너의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 blob_container 환경 변수로 설정한 값과 일치해야 합니다.
SELECT * FROM azure_storage.blob_get
('<account_name>'
,'<container_name>'
,'events_pipe.csv'
,NULL::events
,options := azure_storage.options_csv_get(delimiter := '|' , header := 'true')
);
Blob의 내용에 대한 집계 쿼리
이 예제에서는 Blob의 내용을 PostgreSQL 테이블로 가져올 필요 없이 Blob 컨테이너에 저장된 정보에 대해 집계 작업을 수행하는 방법을 보여 줍니다.
<account_name>
은 스토리지 계정의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 storage_account 환경 변수에 설정한 값과 일치해야 합니다.
<container_name>
은 Blob 컨테이너의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 blob_container 환경 변수로 설정한 값과 일치해야 합니다.
SELECT event_type, COUNT(*) FROM azure_storage.blob_get
('<account_name>'
,'<container_name>'
,'events.csv'
, NULL::events)
GROUP BY event_type
ORDER BY 2 DESC
LIMIT 5;
COPY 문을 사용하여 데이터 가져오기
다음 예제에서는 명령을 통해 COPY
Azure Storage 계정<account_name>
의 Blob 컨테이너 <container_name>
에 상주하는 Blob에서 events.csv
데이터를 가져오는 방법을 보여 줍니다.
원본 파일의 스키마와 일치하는 테이블을 만듭니다.
CREATE TABLE IF NOT EXISTS events ( event_id bigint ,event_type text ,event_public boolean ,repo_id bigint ,payload jsonb ,repo jsonb ,user_id bigint ,org jsonb ,created_at timestamp without time zone );
COPY
문을 사용하여 데이터를 대상 테이블에 복사합니다. 첫 번째 행에 열 머리글이 포함되도록 지정합니다.COPY events FROM 'https://<account_name>.blob.core.windows.net/<container_name>/events.csv' WITH (FORMAT 'csv', header);
컨테이너의 Blob에 콘텐츠 쓰기
함수는 blob_put
하나의 특정 Blob(eventscopy.csv
이 경우)의 내용을 구성하고 스토리지의 참조된 컨테이너 <container_name>
에 <account_name>
업로드합니다. 이 예제에서는 blob_get
5개의 행 집합을 생성한 다음, Blob으로 eventscopy.csv
업로드하는 집계 함수에 전달 blob_put
됩니다.
<account_name>
은 스토리지 계정의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 storage_account 환경 변수에 설정한 값과 일치해야 합니다.
<container_name>
은 Blob 컨테이너의 이름으로 설정해야 합니다. 이전 스크립트를 사용한 경우 이 값은 해당 스크립트의 blob_container 환경 변수로 설정한 값과 일치해야 합니다.
SELECT azure_storage.blob_put
('<account_name>'
,'<container_name>'
,'eventscopy.csv'
, top_5_events)
FROM (SELECT * FROM azure_storage.blob_get
('<account_name>'
,'<container_name>'
,'events.csv'
, NULL::events) LIMIT 5) AS top_5_events;
COPY 문을 사용하여 데이터 내보내기
다음 예제에서는 명령을 통해 COPY
Azure Storage 계정<account_name>
의 Blob 컨테이너 <container_name>
에 상주하는 Blob이라는 events_exported.csv
테이블events
의 데이터 내보내기를 보여 줍니다.
원본 파일의 스키마와 일치하는 테이블을 만듭니다.
CREATE TABLE IF NOT EXISTS events ( event_id bigint ,event_type text ,event_public boolean ,repo_id bigint ,payload jsonb ,repo jsonb ,user_id bigint ,org jsonb ,created_at timestamp without time zone );
테이블에 데이터를 로드합니다. INSERT 문을 실행하여 여러 가상 행으로 채웁니다. 또는 COPY 문 예제를 사용하여 데이터 가져오기를 사용하여 샘플 데이터 집합의 내용으로 채웁니다.
COPY
문을 사용하여 데이터를 대상 테이블에 복사합니다. 첫 번째 행에 열 머리글이 포함되도록 지정합니다.COPY events TO 'https://<account_name>.blob.core.windows.net/<container_name>/events_exported.csv' WITH (FORMAT 'csv', header);
관련 콘텐츠
- Azure Database for PostgreSQL - 유연한 서버에서 Azure Storage를 사용하여 데이터를 가져오고 내보냅니다.
- Azure Database for PostgreSQL - 유연한 서버에서 PostgreSQL 확장을 관리합니다.