Importowanie i eksportowanie danych przy użyciu rozszerzenia azure_storage w usłudze Azure Database for PostgreSQL — serwer elastyczny
DOTYCZY: Azure Database for PostgreSQL — serwer elastyczny
Rozszerzenie azure_storage umożliwia importowanie lub eksportowanie danych w wielu formatach plików bezpośrednio między kontami usługi Azure Storage a wystąpieniem serwera elastycznego usługi Azure Database for PostgreSQL.
Przykłady eksportowania i importowania danych przy użyciu tego rozszerzenia można znaleźć w sekcji Przykłady w tym artykule.
Aby użyć rozszerzenia w wystąpieniu azure_storage
serwera elastycznego usługi Azure Database for PostgreSQL, należy dodać rozszerzenie do parametru shared_preload_libraries
, a także dodać je do parametru azure.extensions
serwera, zgodnie z opisem w sposobie używania rozszerzeń PostgreSQL.
Ponieważ shared_preload_library
jest parametrem serwera statycznego, wymaga ponownego uruchomienia serwera, aby zmiany zaczęły obowiązywać.
Po ponownym uruchomieniu serwera połącz się z wystąpieniem bazy danych PostgreSQL przy użyciu klienta preferencji (na przykład psql, pgAdmin itp.). Upewnij się, że SHOW azure.extensions;
wartości , i SHOW shared_preload_libraries;
, zawierają wartość azure_storage
na liście wartości rozdzielonych przecinkami zwracanych przez poszczególne SHOW
instrukcje.
Tylko wtedy można zainstalować rozszerzenie, łącząc się z docelową bazą danych i uruchamiając instrukcję CREATE EXTENSION . Należy powtórzyć polecenie oddzielnie dla każdej bazy danych, w której ma być dostępne rozszerzenie.
CREATE EXTENSION azure_storage;
Omówienie procedury
- Zidentyfikuj konta usługi Azure Storage, z którymi mają korzystać użytkownicy
azure_storage
rozszerzenia. - Zdecyduj, jakiego typu autoryzację chcesz użyć dla żądań względem usługi blob każdego z tych kont usługi Azure Storage.
azure_storage
Rozszerzenie obsługuje autoryzację z kluczem udostępnionym i autoryzacją z identyfikatorem Entra firmy Microsoft. Spośród tych dwóch typów autoryzacji identyfikator Entra firmy Microsoft zapewnia lepsze zabezpieczenia i łatwość użycia za pośrednictwem klucza współużytkowanego i jest zalecanym przez firmę Microsoft. Aby spełnić wymagania wstępne wymagane w każdym przypadku, postępuj zgodnie z instrukcjami w odpowiednich sekcjach:- Autoryzacja przy użyciu identyfikatora Entra firmy Microsoft lub
- Autoryzacja z kluczem udostępnionym.
- Uwzględnij
azure_storage
w plikushared_preload_libraries
:
shared_preload_libraries
Ponieważ element jest statyczny, należy ponownie uruchomić serwer, aby zmiany zaczęły obowiązywać:
- Uwzględnij
azure_storage
w plikuazure.extensions
:
- Korzystając z klienta preferencji (na przykład psql, pgAdmin itp.), połącz się z dowolną bazą danych w wystąpieniu serwera elastycznego usługi Azure Database for PostgreSQL. Aby utworzyć wszystkie obiekty SQL (tabele, typy, funkcje, widoki itp.), za pomocą
azure_storage
którego można używać rozszerzenia do interakcji z wystąpieniami kont usługi Azure Storage, wykonaj następującą instrukcję:CREATE EXTENSION azure_storage;
azure_storage.account_*
Korzystając z funkcji, dodaj odwołania do kont usługi Azure Storage, które mają umożliwić użytkownikom lub rolam bazy danych PostgreSQL dostęp za pomocąazure_storage
rozszerzenia. Odwołania te obejmują nazwę przywoływanego konta usługi Azure Storage oraz typ uwierzytelniania, który ma być używany podczas interakcji z kontem usługi Azure Storage. W zależności od wybranego typu uwierzytelniania może być również konieczne podanie innych parametrów, takich jak klucz dostępu do konta usługi Azure Storage lub token SAS.
Ważne
W przypadku typów uwierzytelniania, dla których musisz podać klucz dostępu do konta usługi Azure Storage, zwróć uwagę, że klucze dostępu usługi Azure Storage są podobne do hasła głównego dla konta magazynu. Zawsze należy zachować ostrożność, aby je chronić. Usługa Azure Key Vault umożliwia bezpieczne zarządzanie kluczami i obracanie ich. azure_storage
rozszerzenie przechowuje te klucze w tabeli azure_storage.accounts
, która może być odczytywana przez członków pg_read_all_data
roli.
Użytkownicy, którym przyznano azure_storage_admin
rolę, mogą wchodzić w interakcje z azure_storage.accounts
tabelą przy użyciu następujących funkcji:
- azure_storage.account_add
- azure_storage.account_list
- azure_storage.account_remove
- azure_storage.account_user_add
- azure_storage.account_user_remove
Rola azure_storage_admin
jest domyślnie przyznawana azure_pg_admin
roli.
Aby użyć autoryzacji z identyfikatorem Entra firmy Microsoft
- Włącz tożsamość zarządzaną przypisaną przez system w wystąpieniu serwera elastycznego usługi Azure Database for PostgreSQL.
- Uruchom ponownie wystąpienie serwera elastycznego usługi Azure Database for PostgreSQL po włączeniu przypisanej przez system tożsamości zarządzanej.
- Przypisz uprawnienia kontroli dostępu opartej na rolach (RBAC) na potrzeby dostępu do danych obiektów blob na koncie usługi Azure Storage do przypisanej przez system tożsamości zarządzanej wystąpienia serwera elastycznego usługi Azure Database for PostgreSQL.
Aby użyć autoryzacji z kluczem udostępnionym
- Konto usługi Azure Storage musi mieć włączoną opcję Zezwalaj na dostęp do klucza magazynu (czyli nie może mieć właściwości AllowSharedKeyAccess ustawionej na wartość false).
- Aby przekazać ją do funkcji azure_storage.account_add , pobierz jeden z dwóch kluczy dostępu konta usługi Azure Storage.
Funkcje
azure_storage.account_add
Funkcja, która umożliwia dodawanie konta magazynu i skojarzonego z nim klucza dostępu do listy kont magazynu, do których azure_storage
rozszerzenie może uzyskać dostęp.
Jeśli poprzednie wywołanie tej funkcji już dodało odwołanie do tego konta magazynu, nie dodaje nowego wpisu, ale zamiast tego aktualizuje klucz dostępu istniejącego wpisu.
Uwaga
Ta funkcja nie sprawdza, czy określona nazwa konta istnieje lub czy jest dostępna z podanym kluczem dostępu. Sprawdza jednak, czy nazwa konta magazynu jest prawidłowa, zgodnie z regułami walidacji nazewnictwa nałożonymi na konta usługi Azure Storage.
azure_storage.account_add(account_name_p text, account_key_p text);
Istnieje przeciążona wersja tej funkcji, która akceptuje parametr, który hermetyzuje account_config
nazwę przywoływanego konta usługi Azure Storage, oraz wszystkie wymagane ustawienia, takie jak typ uwierzytelniania, typ konta lub poświadczenia magazynu.
azure_storage.account_add(account_config jsonb);
Uprawnienia
Musi być członkiem .azure_storage_admin
Argumenty
account_name_p
text
nazwa konta usługi Azure Blob Storage, które zawiera wszystkie obiekty: obiekty blob, pliki, kolejki i tabele. Konto magazynu zapewnia unikatową przestrzeń nazw dostępną z dowolnego miejsca na świecie za pośrednictwem protokołu HTTPS.
account_key_p
text
wartość jednego z kluczy dostępu dla konta magazynu. Klucze dostępu do usługi Azure Blob Storage są podobne do hasła głównego dla konta magazynu. Zawsze należy zachować ostrożność, aby chronić klucze dostępu. Usługa Azure Key Vault umożliwia bezpieczne zarządzanie kluczami i obracanie ich. Klucz konta jest przechowywany w tabeli, która jest dostępna tylko przez administratora. Użytkownicy, którym przyznano azure_storage_admin
rolę, mogą wchodzić w interakcje z tą tabelą za pośrednictwem funkcji. Aby sprawdzić, które konta magazynu są dodawane, użyj funkcji azure_storage.account_list.
account_config
jsonb
nazwa konta usługi Azure Storage i wszystkie wymagane ustawienia, takie jak typ uwierzytelniania, typ konta lub poświadczenia magazynu. Zalecamy użycie funkcji narzędziowych azure_storage.account_options_managed_identity, azure_storage.account_options_credentials lub azure_storage.account_options , aby utworzyć dowolne z prawidłowych wartości, które muszą zostać przekazane jako ten argument.
Typ zwracany
VOID
azure_storage.account_options_managed_identity
Funkcja, która działa jako funkcja narzędzia, którą można wywołać jako parametr w ramach azure_storage.account_add, i jest przydatna do utworzenia prawidłowej wartości argumentu account_config
przy użyciu tożsamości zarządzanej przypisanej przez system do interakcji z kontem usługi Azure Storage.
azure_storage.account_options_managed_identity(name text, type azure_storage.storage_type);
Uprawnienia
Każdy użytkownik lub rola może wywołać tę funkcję.
Argumenty
name
text
nazwa konta usługi Azure Blob Storage, które zawiera wszystkie obiekty: obiekty blob, pliki, kolejki i tabele. Konto magazynu zapewnia unikatową przestrzeń nazw dostępną z dowolnego miejsca na świecie za pośrednictwem protokołu HTTPS.
type
azure_storage.storage_type
wartość jednego z obsługiwanych typów magazynu. Tylko obsługiwana wartość to blob
.
Typ zwracany
jsonb
azure_storage.account_options_credentials
Funkcja, która działa jako funkcja narzędzia, która może być wywoływana jako parametr w pliku azure_storage.account_add, i jest przydatna do utworzenia prawidłowej wartości argumentu account_config
podczas korzystania z klucza dostępu usługi Azure Storage w celu interakcji z kontem usługi Azure Storage.
azure_storage.account_options_credentials(name text, credentials text, type azure_storage.storage_type);
Uprawnienia
Każdy użytkownik lub rola może wywołać tę funkcję.
Argumenty
name
text
nazwa konta usługi Azure Blob Storage, które zawiera wszystkie obiekty: obiekty blob, pliki, kolejki i tabele. Konto magazynu zapewnia unikatową przestrzeń nazw dostępną z dowolnego miejsca na świecie za pośrednictwem protokołu HTTPS.
poświadczenia
text
wartość jednego z kluczy dostępu dla konta magazynu. Klucze dostępu do usługi Azure Blob Storage są podobne do hasła głównego dla konta magazynu. Zawsze należy zachować ostrożność, aby chronić klucze dostępu. Usługa Azure Key Vault umożliwia bezpieczne zarządzanie kluczami i obracanie ich. Klucz konta jest przechowywany w tabeli, która jest dostępna tylko przez administratora. Użytkownicy, którym przyznano azure_storage_admin
rolę, mogą wchodzić w interakcje z tą tabelą za pośrednictwem funkcji. Aby sprawdzić, które konta magazynu są dodawane, użyj funkcji azure_storage.account_list.
type
azure_storage.storage_type
wartość jednego z obsługiwanych typów magazynu. Tylko obsługiwana wartość to blob
.
Typ zwracany
jsonb
azure_storage.account_options
Funkcja, która działa jako funkcja narzędzia, którą można wywołać jako parametr w ramach azure_storage.account_add, i jest przydatna do utworzenia prawidłowej wartości argumentu account_config
przy użyciu klucza dostępu usługi Azure Storage lub przypisanej przez system tożsamości zarządzanej w celu interakcji z kontem usługi Azure Storage.
azure_storage.account_options(name text, auth_type azure_storage.auth_type, storage_type azure_storage.storage_type, credentials text DEFAULT NULL);
Uprawnienia
Każdy użytkownik lub rola może wywołać tę funkcję.
Argumenty
name
text
nazwa konta usługi Azure Blob Storage, które zawiera wszystkie obiekty: obiekty blob, pliki, kolejki i tabele. Konto magazynu zapewnia unikatową przestrzeń nazw dostępną z dowolnego miejsca na świecie za pośrednictwem protokołu HTTPS.
auth_type
azure_storage.auth_type
wartość jednego z obsługiwanych typów magazynu. Obsługiwane są access-key
tylko wartości , i managed-identity
.
storage_type
azure_storage.storage_type
wartość jednego z obsługiwanych typów magazynu. Tylko obsługiwana wartość to blob
.
poświadczenia
text
wartość jednego z kluczy dostępu dla konta magazynu. Klucze dostępu do usługi Azure Blob Storage są podobne do hasła głównego dla konta magazynu. Zawsze należy zachować ostrożność, aby chronić klucze dostępu. Usługa Azure Key Vault umożliwia bezpieczne zarządzanie kluczami i obracanie ich. Klucz konta jest przechowywany w tabeli, która jest dostępna tylko przez administratora. Użytkownicy, którym przyznano azure_storage_admin
rolę, mogą wchodzić w interakcje z tą tabelą za pośrednictwem funkcji. Aby sprawdzić, które konta magazynu są dodawane, użyj funkcji azure_storage.account_list.
Typ zwracany
jsonb
azure_storage.account_remove
Funkcja, która umożliwia usunięcie konta magazynu i skojarzonego z nim klucza dostępu z listy kont magazynu, do których azure_storage
rozszerzenie może uzyskać dostęp.
azure_storage.account_remove(account_name_p text);
Uprawnienia
Musi być członkiem .azure_storage_admin
Argumenty
account_name_p
text
nazwa konta usługi Azure Blob Storage, które zawiera wszystkie obiekty: obiekty blob, pliki, kolejki i tabele. Konto magazynu zapewnia unikatową przestrzeń nazw dostępną z dowolnego miejsca na świecie za pośrednictwem protokołu HTTPS.
Typ zwracany
VOID
azure_storage.account_user_add
Funkcja, która umożliwia przyznanie użytkownikowi lub roli postgreSQL dostępu do konta magazynu za pośrednictwem funkcji udostępnianych przez azure_storage
rozszerzenie.
Uwaga
Wykonanie tej funkcji powiedzie się tylko wtedy, gdy konto magazynu, którego nazwa jest przekazywana jako pierwszy argument, została już utworzona przy użyciu azure_storage.account_add, a jeśli użytkownik lub rola, której nazwa jest przekazywana jako drugi argument, już istnieje.
azure_storage.account_add(account_name_p text, user_p regrole);
Uprawnienia
Musi być członkiem .azure_storage_admin
Argumenty
account_name_p
text
nazwa konta usługi Azure Blob Storage, które zawiera wszystkie obiekty: obiekty blob, pliki, kolejki i tabele. Konto magazynu zapewnia unikatową przestrzeń nazw dostępną z dowolnego miejsca na świecie za pośrednictwem protokołu HTTPS.
user_p
regrole
nazwa użytkownika lub roli postgreSQL dostępnej na serwerze.
Typ zwracany
VOID
azure_storage.account_user_remove
Funkcja, która umożliwia odwołanie użytkownika lub roli PostgreSQL dostępu do konta magazynu za pośrednictwem funkcji udostępnianych przez azure_storage
rozszerzenie.
Uwaga
Wykonanie tej funkcji powiedzie się tylko wtedy, gdy konto magazynu, którego nazwa jest przekazywana jako pierwszy argument, został już utworzony przy użyciu azure_storage.account_add, a jeśli użytkownik lub rola, której nazwa jest przekazywana jako drugi argument, nadal istnieje.
Gdy użytkownik lub rola zostanie porzucona z serwera, przez wykonanie DROP USER | ROLE
polecenia , uprawnienia, które zostały przyznane w dowolnym odwołaniu do kont usługi Azure Storage, również zostaną automatycznie wyeliminowane.
azure_storage.account_user_remove(account_name_p text, user_p regrole);
Uprawnienia
Musi być członkiem .azure_storage_admin
Argumenty
account_name_p
text
nazwa konta usługi Azure Blob Storage, które zawiera wszystkie obiekty: obiekty blob, pliki, kolejki i tabele. Konto magazynu zapewnia unikatową przestrzeń nazw dostępną z dowolnego miejsca na świecie za pośrednictwem protokołu HTTPS.
user_p
regrole
nazwa użytkownika lub roli postgreSQL dostępnej na serwerze.
Typ zwracany
VOID
azure_storage.account_list
Funkcja zawierająca listę nazw kont magazynu skonfigurowanych za pośrednictwem funkcji azure_storage.account_add wraz z użytkownikami lub rolami postgreSQL, którym przyznano uprawnienia do interakcji z tym kontem magazynu za pośrednictwem funkcji udostępnianych przez azure_storage
rozszerzenie.
azure_storage.account_list();
Uprawnienia
Musi być członkiem .azure_storage_admin
Argumenty
Ta funkcja nie bierze żadnych argumentów.
Typ zwracany
TABLE(account_name text, auth_type azure_storage.auth_type, azure_storage_type azure_storage.storage_type, allowed_users regrole[])
czterokolumna tabela z dodaną listą kont usługi Azure Storage, typem uwierzytelniania używanego do interakcji z poszczególnymi kontami, typem magazynu oraz listą użytkowników lub ról postgreSQL, którym udzielono dostępu.
azure_storage.blob_list
Funkcja, która wyświetla nazwy i inne właściwości (rozmiar, lastModified, eTag, contentType, contentEncoding i contentHash) obiektów blob przechowywanych w danym kontenerze określonego konta magazynu.
azure_storage.blob_list(account_name text, container_name text, prefix text DEFAULT ''::text);
Uprawnienia
Użytkownik lub rola wywołująca tę funkcję należy dodać do listy dozwolonych dla określonego account_name
elementu, wykonując azure_storage.account _user_add. Członkowie programu azure_storage_admin
mogą automatycznie odwoływać się do wszystkich kont usługi Azure Storage, których odwołania zostały dodane przy użyciu azure_storage.account_add.
Argumenty
account_name
text
nazwa konta usługi Azure Blob Storage, które zawiera wszystkie obiekty: obiekty blob, pliki, kolejki i tabele. Konto magazynu zapewnia unikatową przestrzeń nazw dostępną z dowolnego miejsca na świecie za pośrednictwem protokołu HTTPS.
container_name
text
nazwa kontenera. Kontener porządkuje zestaw obiektów blob, pełniąc funkcję podobną do katalogu w systemie plików. Konto magazynu może zawierać nieograniczoną liczbę kontenerów, a każdy kontener może zawierać nieograniczoną liczbę obiektów blob.
Nazwa kontenera musi być prawidłową nazwą systemu nazw domen (DNS), ponieważ stanowi część unikatowego identyfikatora URI używanego do adresowania kontenera lub jego obiektów blob.
Podczas nazewnictwa kontenera upewnij się, że są one zgodne z tymi regułami.
Identyfikator URI kontenera jest podobny do następującego: https://myaccount.blob.core.windows.net/mycontainer
przedrostek
text
po określeniu funkcja zwraca obiekty blob, których nazwy zaczynają się od wartości podanej w tym parametrze. Domyślnie jest to pusty ciąg.
Typ zwracany
TABLE(path text, bytes bigint, last_modified timestamp with time zone, etag text, content_type text, content_encoding text, content_hash text)
zwracana tabela z jednym rekordem na obiekt blob, w tym pełną nazwą obiektu blob i innymi właściwościami.
path
text
pełna nazwa obiektu blob.
B
bigint
rozmiar obiektu blob w bajtach.
last_modified
timestamp with time zone
data i godzina ostatniej modyfikacji obiektu blob. Każda operacja modyfikując obiekt blob, w tym aktualizację metadanych lub właściwości obiektu blob, zmienia czas ostatniej modyfikacji obiektu blob.
etag
text
Właściwość ETag jest używana do optymistycznej współbieżności podczas aktualizacji. Nie jest to sygnatura czasowa, ponieważ istnieje inna właściwość o nazwie Sygnatura czasowa, która przechowuje ostatni raz rekord został zaktualizowany. Jeśli na przykład załadujesz jednostkę i chcesz ją zaktualizować, element ETag musi być zgodny z tym, co jest obecnie przechowywane. Ustawienie odpowiedniego elementu ETag jest ważne, ponieważ jeśli masz wielu użytkowników edytując ten sam element, nie chcesz, aby zastępowały zmiany siebie nawzajem.
content_type
text
typ zawartości określony dla obiektu blob. Domyślnym typem zawartości jest application/octet-stream
.
content_encoding
text
właściwość Content-Encoding obiektu blob, który umożliwia zdefiniowanie usługi Azure Storage. W przypadku skompresowanej zawartości można ustawić właściwość na Gzip. Gdy przeglądarka uzyskuje dostęp do zawartości, automatycznie dekompresuje zawartość.
content_hash
text
skrót używany do weryfikowania integralności obiektu blob podczas transportu. Po określeniu tego nagłówka usługa magazynu sprawdza podany skrót z jednym obliczonym z zawartości. Jeśli dwa skróty nie są zgodne, operacja kończy się niepowodzeniem z kodem błędu 400 (Nieprawidłowe żądanie).
azure_storage.blob_get
Funkcja umożliwiająca importowanie danych. Pobiera co najmniej jeden plik z kontenera obiektów blob na koncie usługi Azure Storage. Następnie tłumaczy zawartość na wiersze, które mogą być używane i przetwarzane przy użyciu konstrukcji języka SQL. Ta funkcja dodaje obsługę filtrowania i manipulowania danymi pobranymi z kontenera obiektów blob przed ich zaimportowaniem.
Uwaga
Przed próbą uzyskania dostępu do kontenera dla określonego konta magazynu ta funkcja sprawdza, czy nazwy konta magazynu i kontenera przekazane jako argumenty są prawidłowe zgodnie z regułami walidacji nazewnictwa nałożonymi na konta usługi Azure Storage. Jeśli którykolwiek z nich jest nieprawidłowy, zostanie zgłoszony błąd.
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);
Istnieje przeciążona wersja tej funkcji, która akceptuje rec
parametr, który umożliwia wygodne definiowanie rekordu formatu wyjściowego.
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);
Uprawnienia
Użytkownik lub rola wywołująca tę funkcję należy dodać do listy dozwolonych dla określonego account_name
elementu, wykonując azure_storage.account _user_add. Członkowie programu azure_storage_admin
mogą automatycznie odwoływać się do wszystkich kont usługi Azure Storage, których odwołania zostały dodane przy użyciu azure_storage.account_add.
Argumenty
account_name
text
nazwa konta usługi Azure Blob Storage, które zawiera wszystkie obiekty: obiekty blob, pliki, kolejki i tabele. Konto magazynu zapewnia unikatową przestrzeń nazw dostępną z dowolnego miejsca na świecie za pośrednictwem protokołu HTTPS.
container_name
text
nazwa kontenera. Kontener porządkuje zestaw obiektów blob, pełniąc funkcję podobną do katalogu w systemie plików. Konto magazynu może zawierać nieograniczoną liczbę kontenerów, a każdy kontener może zawierać nieograniczoną liczbę obiektów blob.
Nazwa kontenera musi być prawidłową nazwą systemu nazw domen (DNS), ponieważ stanowi część unikatowego identyfikatora URI używanego do adresowania kontenera lub jego obiektów blob.
Podczas nazewnictwa kontenera upewnij się, że są one zgodne z tymi regułami.
Identyfikator URI kontenera jest podobny do następującego: https://myaccount.blob.core.windows.net/mycontainer
path
text
pełna nazwa obiektu blob.
Rec
anyelement
definicja struktury danych wyjściowych rekordu.
Dekoder
text
specyfikacja formatu obiektu blob. Można ustawić dowolną z następujących wartości:
Format | Wartość domyślna | Opis |
---|---|---|
auto |
true |
Wywnioskuje wartość na podstawie ostatniej serii znaków przypisanych do nazwy obiektu blob. Jeśli nazwa obiektu blob kończy się ciągiem .csv lub .csv.gz , przyjmuje wartość csv . Jeśli wartość kończy się ciągiem .tsv lub .tsv.gz , przyjmuje wartość tsv . Jeśli kończy się ciągiem .json , , .json.gz , .xml .xml.gz , .txt lub .txt.gz , przyjmuje wartość text . |
csv |
Format wartości rozdzielonych przecinkami używany przez narzędzie PostgreSQL COPY. | |
tsv |
Wartości rozdzielane tabulatorami, domyślny format KOPIOWANIa postgreSQL. | |
binary |
Format kopiowania plików binarnych PostgreSQL. | |
text | xml | json |
Plik zawierający pojedynczą wartość tekstową. |
kompresja
text
specyfikacja typu kompresji. Można ustawić dowolną z następujących wartości:
Format | Wartość domyślna | Opis |
---|---|---|
auto |
true |
Wywnioskuje wartość na podstawie ostatniej serii znaków przypisanych do nazwy obiektu blob. Jeśli nazwa obiektu blob kończy się ciągiem .gz , przyjmuje wartość gzip . W przeciwnym razie przyjęto none założenie, że . |
gzip |
Wymusza użycie dekodera gzip do dekompresowania obiektu blob. | |
none |
Wymusza traktowanie obiektu blob jako obiektu blob, który nie wymaga dekompresji. |
Rozszerzenie nie obsługuje żadnych innych typów kompresji.
options
jsonb
ustawienia definiujące obsługę nagłówków niestandardowych, separatorów niestandardowych, znaków ucieczki itp. options
wpływa na zachowanie tej funkcji w sposób podobny do sposobu przekazywania opcji do COPY
polecenia w usłudze PostgreSQL wpływa na jego zachowanie.
Typ zwracany
SETOF record
SETOF anyelement
azure_storage.blob_put
Funkcja umożliwiająca eksportowanie danych przez przekazanie plików do kontenera obiektów blob na koncie usługi Azure Storage. Zawartość plików jest generowany z wierszy w usłudze PostgreSQL.
Uwaga
Przed próbą uzyskania dostępu do kontenera dla określonego konta magazynu ta funkcja sprawdza, czy nazwy konta magazynu i kontenera przekazane jako argumenty są prawidłowe zgodnie z regułami walidacji nazewnictwa nałożonymi na konta usługi Azure Storage. Jeśli którykolwiek z nich jest nieprawidłowy, zostanie zgłoszony błąd.
azure_storage.blob_put(account_name text, container_name text, path text, tuple record)
RETURNS VOID;
Istnieje przeciążona wersja funkcji zawierająca parametr, który umożliwia określenie kodera do użycia, encoder
gdy nie można wywnioskować go z rozszerzenia parametru path
lub gdy chcesz zastąpić ten, wywnioskowany.
azure_storage.blob_put(account_name text, container_name text, path text, tuple record, encoder text)
RETURNS VOID;
Istnieje przeciążona wersja funkcji, która zawiera compression
również parametr, który pozwala określić kompresję do użycia, gdy nie można wywnioskować z rozszerzenia parametru path
lub gdy chcesz zastąpić ten, wywnioskowany.
azure_storage.blob_put(account_name text, container_name text, path text, tuple record, encoder text, compression text)
RETURNS VOID;
Istnieje przeciążona wersja funkcji, która zawiera options
również parametr do obsługi nagłówków niestandardowych, separatorów niestandardowych, znaków ucieczki itp. options
działa w podobny sposób do opcji, które można przekazać do COPY
polecenia w usłudze PostgreSQL.
azure_storage.blob_put(account_name text, container_name text, path text, tuple record, encoder text, compression text, options jsonb)
RETURNS VOID;
Uprawnienia
Użytkownik lub rola wywołująca tę funkcję należy dodać do listy dozwolonych dla określonego account_name
elementu, wykonując azure_storage.account _user_add. Członkowie programu azure_storage_admin
mogą automatycznie odwoływać się do wszystkich kont usługi Azure Storage, których odwołania zostały dodane przy użyciu azure_storage.account_add.
Argumenty
account_name
text
nazwa konta usługi Azure Blob Storage, które zawiera wszystkie obiekty: obiekty blob, pliki, kolejki i tabele. Konto magazynu zapewnia unikatową przestrzeń nazw dostępną z dowolnego miejsca na świecie za pośrednictwem protokołu HTTPS.
container_name
text
nazwa kontenera. Kontener porządkuje zestaw obiektów blob, pełniąc funkcję podobną do katalogu w systemie plików. Konto magazynu może zawierać nieograniczoną liczbę kontenerów, a każdy kontener może zawierać nieograniczoną liczbę obiektów blob.
Nazwa kontenera musi być prawidłową nazwą systemu nazw domen (DNS), ponieważ stanowi część unikatowego identyfikatora URI używanego do adresowania kontenera lub jego obiektów blob.
Podczas nazewnictwa kontenera upewnij się, że są one zgodne z tymi regułami.
Identyfikator URI kontenera jest podobny do następującego: https://myaccount.blob.core.windows.net/mycontainer
path
text
pełna nazwa obiektu blob.
tuple
record
definicja struktury danych wyjściowych rekordu.
encoder
text
specyfikacja formatu obiektu blob. Można ustawić dowolną z następujących wartości:
Format | Wartość domyślna | Opis |
---|---|---|
auto |
true |
Wywnioskuje wartość na podstawie ostatniej serii znaków przypisanych do nazwy obiektu blob. Jeśli nazwa obiektu blob kończy się ciągiem .csv lub .csv.gz , przyjmuje wartość csv . Jeśli wartość kończy się ciągiem .tsv lub .tsv.gz , przyjmuje wartość tsv . Jeśli kończy się ciągiem .json , , .json.gz , .xml .xml.gz , .txt lub .txt.gz , przyjmuje wartość text . |
csv |
Format wartości rozdzielonych przecinkami używany przez narzędzie PostgreSQL COPY. | |
tsv |
Wartości rozdzielane tabulatorami, domyślny format KOPIOWANIa postgreSQL. | |
binary |
Format kopiowania plików binarnych PostgreSQL. | |
text | xml | json |
Plik zawierający pojedynczą wartość tekstową. |
kompresja
text
specyfikacja typu kompresji. Można ustawić dowolną z następujących wartości:
Format | Wartość domyślna | Opis |
---|---|---|
auto |
true |
Wywnioskuje wartość na podstawie ostatniej serii znaków przypisanych do nazwy obiektu blob. Jeśli nazwa obiektu blob kończy się ciągiem .gz , przyjmuje wartość gzip . W przeciwnym razie przyjęto none założenie, że . |
gzip |
Wymusza użycie dekodera gzip do dekompresowania obiektu blob. | |
none |
Wymusza traktowanie obiektu blob jako obiektu blob, który nie wymaga dekompresji. |
Rozszerzenie nie obsługuje żadnych innych typów kompresji.
options
jsonb
ustawienia definiujące obsługę nagłówków niestandardowych, separatorów niestandardowych, znaków ucieczki itp. options
wpływa na zachowanie tej funkcji w sposób podobny do sposobu przekazywania opcji do COPY
polecenia w usłudze PostgreSQL wpływa na jego zachowanie.
Typ zwracany
VOID
azure_storage.options_csv_get
Funkcja, która działa jako funkcja narzędzia, którą można wywołać jako parametr w pliku blob_get
, i jest przydatna do dekodowania zawartości pliku 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);
Uprawnienia
Każdy użytkownik lub rola może wywołać tę funkcję.
Argumenty
Ogranicznik
text
znak oddzielający kolumny w każdym wierszu (wierszu) pliku. Musi być pojedynczym znakiem 1-bajtowym. Mimo że ta funkcja obsługuje ograniczniki dowolnej liczby znaków, jeśli spróbujesz użyć więcej niż jednego znaku 1-bajtowego, usługa PostgreSQL zgłasza błąd COPY delimiter must be a single one-byte character
.
null_string
text
ciąg reprezentujący wartość null. Wartość domyślna to \N (ukośnik odwrotny-N) w formacie tekstowym i pusty ciąg bez cudzysłów w formacie CSV. Możesz preferować pusty ciąg nawet w formacie tekstowym, jeśli nie chcesz odróżnić wartości null od pustych ciągów.
nagłówek
boolean
flaga wskazująca, czy plik zawiera wiersz nagłówka z nazwami każdej kolumny w pliku. W danych wyjściowych początkowy wiersz zawiera nazwy kolumn z tabeli.
cytat
text
znak cudzysłów, który ma być używany, gdy wartość danych jest cytowana. Wartość domyślna to podwójny cudzysłów. Musi być pojedynczym znakiem 1-bajtowym. Mimo że ta funkcja obsługuje ograniczniki dowolnej liczby znaków, jeśli spróbujesz użyć więcej niż jednego znaku 1-bajtowego, usługa PostgreSQL zgłasza błąd COPY quote must be a single one-byte character
.
escape
text
znak, który powinien zostać wyświetlony przed znakiem danych zgodnym z wartością CUDZYSŁOWU. Wartość domyślna jest taka sama jak wartość CUDZYSŁOWU (tak aby znak cudzysłowu był podwajany, jeśli pojawia się w danych). Musi być pojedynczym znakiem 1-bajtowym. Mimo że ta funkcja obsługuje ograniczniki dowolnej liczby znaków, jeśli spróbujesz użyć więcej niż jednego znaku 1-bajtowego, usługa PostgreSQL zgłasza błąd COPY escape must be a single one-byte character
.
force_not_null
text[]
nie dopasuj wartości określonych kolumn do ciągu o wartości null. W domyślnym przypadku, gdy ciąg null jest pusty, oznacza to, że puste wartości są odczytywane jako ciągi o zerowej długości, a nie wartości null, nawet jeśli nie są cytowane.
force_null
text[]
dopasuj wartości określonych kolumn do ciągu o wartości null, nawet w przypadku cudzysłów, a jeśli zostanie znalezione dopasowanie, ustaw wartość NULL. W domyślnym przypadku, w którym ciąg null jest pusty, konwertuje ciąg pusty cudzysłów na wartość NULL.
content_encoding
text
nazwa kodowania, za pomocą którego plik jest zakodowany. Jeśli opcja zostanie pominięta, zostanie użyte bieżące kodowanie klienta.
Typ zwracany
jsonb
azure_storage.options_copy
Funkcja, która działa jako funkcja narzędzia, którą można wywołać jako parametr w pliku blob_get
. Działa jako funkcja pomocnika dla options_csv_get, options_tsv i 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);
Uprawnienia
Każdy użytkownik lub rola może wywołać tę funkcję.
Argumenty
Ogranicznik
text
znak oddzielający kolumny w każdym wierszu (wierszu) pliku. Musi być pojedynczym znakiem 1-bajtowym. Mimo że ta funkcja obsługuje ograniczniki dowolnej liczby znaków, jeśli spróbujesz użyć więcej niż jednego znaku 1-bajtowego, usługa PostgreSQL zgłasza błąd COPY delimiter must be a single one-byte character
.
null_string
text
ciąg reprezentujący wartość null. Wartość domyślna to \N (ukośnik odwrotny-N) w formacie tekstowym i pusty ciąg bez cudzysłów w formacie CSV. Możesz preferować pusty ciąg nawet w formacie tekstowym, jeśli nie chcesz odróżnić wartości null od pustych ciągów.
nagłówek
boolean
flaga wskazująca, czy plik zawiera wiersz nagłówka z nazwami każdej kolumny w pliku. W danych wyjściowych początkowy wiersz zawiera nazwy kolumn z tabeli.
cytat
text
znak cudzysłów, który ma być używany, gdy wartość danych jest cytowana. Wartość domyślna to podwójny cudzysłów. Musi być pojedynczym znakiem 1-bajtowym. Mimo że ta funkcja obsługuje ograniczniki dowolnej liczby znaków, jeśli spróbujesz użyć więcej niż jednego znaku 1-bajtowego, usługa PostgreSQL zgłasza błąd COPY quote must be a single one-byte character
.
escape
text
znak, który powinien zostać wyświetlony przed znakiem danych zgodnym z wartością CUDZYSŁOWU. Wartość domyślna jest taka sama jak wartość CUDZYSŁOWU (tak aby znak cudzysłowu był podwajany, jeśli pojawia się w danych). Musi być pojedynczym znakiem 1-bajtowym. Mimo że ta funkcja obsługuje ograniczniki dowolnej liczby znaków, jeśli spróbujesz użyć więcej niż jednego znaku 1-bajtowego, usługa PostgreSQL zgłasza błąd COPY escape must be a single one-byte character
.
force_quote
text[]
wymusza cudzysłów, które mają być używane dla wszystkich wartości innych niż NULL w każdej określonej kolumnie. Dane wyjściowe null nigdy nie są cytowane. Jeśli wartość * jest określona, wartości inne niż NULL są cytowane we wszystkich kolumnach.
force_not_null
text[]
nie dopasuj wartości określonych kolumn do ciągu o wartości null. W domyślnym przypadku, gdy ciąg null jest pusty, oznacza to, że puste wartości są odczytywane jako ciągi o zerowej długości, a nie wartości null, nawet jeśli nie są cytowane.
force_null
text[]
dopasuj wartości określonych kolumn do ciągu o wartości null, nawet w przypadku cudzysłów, a jeśli zostanie znalezione dopasowanie, ustaw wartość NULL. W domyślnym przypadku, w którym ciąg null jest pusty, konwertuje ciąg pusty cudzysłów na wartość NULL.
content_encoding
text
nazwa kodowania, za pomocą którego plik jest zakodowany. Jeśli opcja zostanie pominięta, zostanie użyte bieżące kodowanie klienta.
Typ zwracany
jsonb
azure_storage.options_tsv
Funkcja, która działa jako funkcja narzędzia, którą można wywołać jako parametr w pliku blob_get
, i jest przydatna do dekodowania zawartości pliku tsv.
azure_storage.options_tsv(delimiter text DEFAULT NULL::text, null_string text DEFAULT NULL::text, content_encoding text DEFAULT NULL::text);
Uprawnienia
Każdy użytkownik lub rola może wywołać tę funkcję.
Argumenty
Ogranicznik
text
znak oddzielający kolumny w każdym wierszu (wierszu) pliku. Musi być pojedynczym znakiem 1-bajtowym. Mimo że ta funkcja obsługuje ograniczniki dowolnej liczby znaków, jeśli spróbujesz użyć więcej niż jednego znaku 1-bajtowego, usługa PostgreSQL zgłasza błąd COPY delimiter must be a single one-byte character
.
null_string
text
ciąg reprezentujący wartość null. Wartość domyślna to \N (ukośnik odwrotny-N) w formacie tekstowym i pusty ciąg bez cudzysłów w formacie CSV. Możesz preferować pusty ciąg nawet w formacie tekstowym, jeśli nie chcesz odróżnić wartości null od pustych ciągów.
content_encoding
text
nazwa kodowania, za pomocą którego plik jest zakodowany. Jeśli opcja zostanie pominięta, zostanie użyte bieżące kodowanie klienta.
Typ zwracany
jsonb
azure_storage.options_binary
Funkcja, która działa jako funkcja narzędzia, która może być wywoływana jako parametr w pliku blob_get
, i jest przydatna do dekodowania zawartości pliku binarnego.
azure_storage.options_binary(content_encoding text DEFAULT NULL::text);
Uprawnienia
Każdy użytkownik lub rola może wywołać tę funkcję.
Argumenty
content_encoding
text
nazwa kodowania, za pomocą którego plik jest zakodowany. Jeśli opcja zostanie pominięta, zostanie użyte bieżące kodowanie klienta.
Typ zwracany
jsonb
Możliwe błędy
BŁĄD: azure_storage: Uprawnienie nie jest wystarczające do wykonania żądanej operacji
Podczas wykonywania dowolnego z funkcji, które wchodzą w interakcję z usługą Azure Storage (azure_storage.blob_list
azure_storage.blob_get
lub azure_storage.blob_put
), a tożsamość zarządzana przypisana przez system nie otrzymuje odpowiednich ról lub uprawnień płaszczyzny danych (zazwyczaj co najmniej współautor danych obiektu blob usługi Storage dla azure_storage.blob_put i co najmniej czytelnik danych obiektu blob usługi Storage dla pozostałych dwóch funkcji).
Może to być również przypadek, że masz już przyznane minimalne wymagane uprawnienia, ale nie są jeszcze w mocy. Propagacja tych uprawnień może potrwać kilka minut.
BŁĄD: azure_storage: brak poświadczeń magazynu
Podczas wykonywania dowolnych funkcji, które wchodzą w interakcję z usługą Azure Storage (azure_storage.blob_list
azure_storage.blob_get
lub azure_storage.blob_put
) i poświadczeniami, za pomocą których rozszerzenie ma zostać uwierzytelnione przy użyciu konta magazynu, nie są zarejestrowane przy użyciu polecenia azure_storage.account_add
.
BŁĄD: azure_storage: błąd wewnętrzny podczas nawiązywania połączenia
Jeśli tożsamość zarządzana przypisana przez system nie jest włączona w wystąpieniu serwera elastycznego.
BŁĄD: azure_storage: nieprawidłowy format poświadczeń magazynu
Gdy tożsamość zarządzana przypisana przez system jest włączona w wystąpieniu serwera elastycznego, ale serwer nie został ponownie uruchomiony po jej włączeniu.
BŁĄD: azure_storage: bieżący użytkownik <user_or_role> nie może używać konta <magazynu storage_account>
Podczas wykonywania dowolnych funkcji, które wchodzą w interakcję z usługą Azure Storage (azure_storage.blob_list
azure_storage.blob_get
lub ) z użytkownikiem lub azure_storage.blob_put
rolą, która nie jest członkiem azure_storage_admin
i nie ma uprawnień, przy użyciu polecenia , azure_storage.account_user_add
do korzystania z określonego konta magazynu.
Przykłady
Przed uruchomieniem następujących przykładów należy spełnić następujące wymagania wstępne:
- Tworzenie konta usługi Azure Storage.
Aby utworzyć konto usługi Azure Storage, jeśli jeszcze go nie masz, dostosuj wartości
<resource_group>
,<location>
,<storage_account>
i<blob_container>
uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure:resource_group=<resource_group> location=<location> storage_account=<storage_account> blob_container=<blob_container> 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
- Utwórz kontener obiektów blob.
Aby utworzyć kontener obiektów blob, uruchom następujący interfejs wiersza polecenia platformy Azure:
az storage container create --account-name $storage_account --name $blob_container -o tsv
- Pobierz jeden z dwóch kluczy dostępu przypisanych do konta magazynu. Upewnij się, że skopiujesz wartość access_key, ponieważ musisz przekazać ją jako argument, aby azure_storage.account_add w kolejnym kroku.
Aby pobrać pierwszy z dwóch kluczy dostępu, uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure:
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
- Pobierz plik z zestawem danych używanym podczas przykładów i przekaż go do kontenera obiektów blob.
Aby pobrać plik z zestawem danych, uruchom następujące polecenie interfejsu wiersza polecenia platformy Azure:
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
Uwaga
Możesz wyświetlić listę kontenerów lub obiektów blob przechowywanych w nich dla określonego konta magazynu, ale tylko wtedy, gdy użytkownik lub rola PostgreSQL ma uprawnienia do odwołania do tego konta magazynu przy użyciu polecenia azure_storage.account_user_add. azure_storage_admin
Członkowie roli otrzymują to uprawnienie dla wszystkich kont usługi Azure Storage, które zostały dodane przy użyciu azure_storage.account_add. Domyślnie tylko członkowie mają azure_pg_admin
przypisaną azure_storage_admin
rolę.
Tworzenie tabeli, w której są ładowane dane
Utwórzmy tabelę, do której zaimportujemy zawartość pliku CSV przekazanego na konto magazynu. W tym celu połącz się z wystąpieniem serwera elastycznego usługi Azure Database for PostgreSQL przy użyciu polecenia PgAdmin
, psql
lub klienta preferencji i wykonaj następującą instrukcję:
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
);
Dodawanie klucza dostępu konta magazynu
W tym przykładzie pokazano, jak dodać odwołanie do konta magazynu wraz z kluczem dostępu tego konta magazynu, które jest wymagane do uzyskania dostępu do jego zawartości za pośrednictwem funkcji udostępnionych przez azure_storage
rozszerzenie w wystąpieniu serwera elastycznego usługi Azure Database for PostgreSQL.
<storage_account>
musi być ustawiona na nazwę konta magazynu. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową storage_account w tych skryptach.
<access_key>
Podobnie należy ustawić wartość pobraną z konta magazynu.
SELECT azure_storage.account_add('<storage_account>', '<access_key>');
Napiwek
Jeśli chcesz pobrać nazwę konta magazynu i jeden z jego kluczy dostępu z witryny Azure Portal, wyszukaj konto magazynu, w menu zasobów wybierz pozycję Klucze dostępu, skopiuj nazwę konta magazynu i skopiuj sekcję Klucz z klucza1 (musisz najpierw wybrać pozycję Pokaż obok klucza).
Usuwanie odwołania do konta magazynu
W tym przykładzie pokazano, jak usunąć wszelkie odwołania do konta magazynu, aby żaden użytkownik w bieżącej bazie danych nie mógł uzyskać dostępu do tego konta magazynu za pomocą azure_storage
funkcji rozszerzenia.
<storage_account>
musi być ustawiona na nazwę konta magazynu. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową storage_account w tych skryptach.
SELECT azure_storage.account_remove('<storage_account>');
Udzielanie dostępu użytkownikowi lub roli w dokumentacji usługi Azure Blob Storage
W tym przykładzie pokazano, jak udzielić dostępu użytkownikowi lub roli o nazwie <regular_user>
, aby taki użytkownik PostgreSQL mógł użyć azure_storage
rozszerzenia w celu uzyskania dostępu do obiektów blob przechowywanych w kontenerach hostowanych przez określone konto usługi Azure Storage.
<storage_account>
musi być ustawiona na nazwę konta magazynu. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową storage_account w tych skryptach.
<regular_user>
musi być ustawiona na nazwę istniejącego użytkownika lub roli.
SELECT * FROM azure_storage.account_user_add('<storage_account>', '<regular_user>');
Wyświetlanie listy wszystkich odwołań do kont usługi Azure Storage
W tym przykładzie pokazano, w jaki sposób można dowiedzieć się, do których kont azure_storage
usługi Azure Storage może się odwoływać rozszerzenie w tej bazie danych, wraz z typem uwierzytelniania używanego do uzyskiwania dostępu do poszczególnych kont magazynu oraz do których użytkowników lub ról udzielono uprawnień za pośrednictwem funkcji azure_storage.account_user_add, aby uzyskać dostęp do tego konta usługi Azure Storage za pośrednictwem funkcji udostępnianych przez rozszerzenie.
SELECT * FROM azure_storage.account_list();
Odwoływanie dostępu od użytkownika lub roli w dokumentacji usługi Azure Blob Storage
W tym przykładzie pokazano, jak odwołać dostęp z użytkownika lub roli o nazwie <regular_user>
, aby taki użytkownik PostgreSQL nie mógł użyć azure_storage
rozszerzenia w celu uzyskania dostępu do obiektów blob przechowywanych w kontenerach hostowanych przez określone konto usługi Azure Storage.
<storage_account>
musi być ustawiona na nazwę konta magazynu. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową storage_account w tych skryptach.
<regular_user>
musi być ustawiona na nazwę istniejącego użytkownika lub roli.
SELECT * FROM azure_storage.account_user_remove('<storage_account>', '<regular_user>');
Wyświetlanie listy wszystkich obiektów blob w kontenerze
W tym przykładzie pokazano, jak wyświetlić listę wszystkich istniejących obiektów blob wewnątrz kontenera <container_name>
konta <storage_account>
magazynu .
<storage_account>
musi być ustawiona na nazwę konta magazynu. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową storage_account w tych skryptach.
<blob_container>
musi być ustawiona na nazwę kontenera obiektów blob. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową blob_container w tych skryptach.
SELECT * FROM azure_storage.blob_list('<storage_account>','<blob_container>');
Wyświetlanie listy obiektów z określonym prefiksem nazwy obiektu blob
W tym przykładzie pokazano, jak wyświetlić listę wszystkich istniejących obiektów blob wewnątrz kontenera <blob_container>
konta <storage_account>
magazynu , którego nazwa obiektu blob zaczyna się od <blob_name_prefix>
.
<storage_account>
musi być ustawiona na nazwę konta magazynu. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową storage_account w tych skryptach.
<blob_container>
musi być ustawiona na nazwę kontenera obiektów blob. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową blob_container w tych skryptach.
<blob_name_prefix>
należy ustawić na dowolny prefiks, który ma zostać uwzględniony w nazwach obiektów blob. Jeśli chcesz zwrócić wszystkie obiekty blob, możesz ustawić ten parametr na pusty ciąg lub nawet nie określić wartości dla tego parametru, w takim przypadku wartość domyślna to pusty ciąg.
SELECT * FROM azure_storage.blob_list('<storage_account>','<blob_container>','<blob_name_prefix>');
Alternatywnie można użyć następującej składni:
SELECT * FROM azure_storage.blob_list('<storage_account>','<blob_container>') WHERE path LIKE '<blob_name_prefix>%';
Odczytywanie zawartości z obiektu blob w kontenerze
Funkcja blob_get
pobiera zawartość jednego określonego obiektu blob (events.csv
w tym przypadku) w określonym kontenerze <blob_container>
<storage_account>
magazynu. Aby blob_get
dowiedzieć się, jak analizować dane, można przekazać wartość w formularzu NULL::table_name
, gdzie table_name
odwołuje się do tabeli, której schemat pasuje do odczytywanego obiektu blob. W tym przykładzie odwołuje się ona do tabeli utworzonej events
na samym początku.
<storage_account>
musi być ustawiona na nazwę konta magazynu. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową storage_account w tych skryptach.
<blob_container>
musi być ustawiona na nazwę kontenera obiektów blob. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową blob_container w tych skryptach.
<blob_name_prefix>
należy ustawić na dowolny prefiks, który ma zostać uwzględniony w nazwach obiektów blob. Jeśli chcesz zwrócić wszystkie obiekty blob, możesz ustawić ten parametr na pusty ciąg lub nawet nie określić wartości dla tego parametru, w takim przypadku wartość domyślna to pusty ciąg.
SELECT * FROM azure_storage.blob_get
('<storage_account>'
,'<blob_container>'
,'events.csv'
, NULL::events)
LIMIT 5;
Alternatywnie można jawnie zdefiniować schemat wyniku przy użyciu AS
klauzuli po funkcji blob_get .
SELECT * FROM azure_storage.blob_get('<storage_account>','<blob_container>','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;
Użyj opcji dekodera
W tym przykładzie pokazano użycie decoder
opcji. Zwykle format jest wnioskowany z rozszerzenia pliku, ale gdy zawartość pliku nie ma pasującego rozszerzenia, można przekazać argument dekodera.
<storage_account>
musi być ustawiona na nazwę konta magazynu. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową storage_account w tych skryptach.
<blob_container>
musi być ustawiona na nazwę kontenera obiektów blob. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową blob_container w tych skryptach.
SELECT * FROM azure_storage.blob_get
('<storage_account>'
,'<blob_container>'
,'events_blob_without_extension'
, NULL::events
, decoder := 'csv')
LIMIT 5;
Użyj kompresji z opcją dekodera
W tym przykładzie pokazano, jak wymusić użycie kompresji gzip w skompresowanym obiekcie blob gzip, którego nazwa nie kończy się rozszerzeniem .gz.
<storage_account>
musi być ustawiona na nazwę konta magazynu. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową storage_account w tych skryptach.
<blob_container>
musi być ustawiona na nazwę kontenera obiektów blob. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową blob_container w tych skryptach.
SELECT * FROM azure_storage.blob_get
('<storage_account>'
,'<blob_container>'
,'events_compressed'
, NULL::events
, decoder := 'csv'
, compression := 'gzip')
LIMIT 5;
Importowanie przefiltrowanej zawartości i modyfikowanie przed załadowaniem z obiektu formatu csv
W tym przykładzie pokazano możliwość filtrowania i modyfikowania zawartości importowanej z obiektu blob przed załadowaniem jej do tabeli SQL.
<storage_account>
musi być ustawiona na nazwę konta magazynu. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową storage_account w tych skryptach.
<blob_container>
musi być ustawiona na nazwę kontenera obiektów blob. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową blob_container w tych skryptach.
SELECT concat('P-',event_id::text) FROM azure_storage.blob_get
('<storage_account>'
,'<blob_container>'
,'events.csv'
, NULL::events)
WHERE event_type='PushEvent'
LIMIT 5;
Wykonywanie zapytań o zawartość z pliku z nagłówkami, separatorami niestandardowymi, znakami ucieczki
W tym przykładzie pokazano, jak można używać separatorów niestandardowych i znaków ucieczki, przekazując wynik options_copy do argumentu options
.
<storage_account>
musi być ustawiona na nazwę konta magazynu. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową storage_account w tych skryptach.
<blob_container>
musi być ustawiona na nazwę kontenera obiektów blob. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową blob_container w tych skryptach.
SELECT * FROM azure_storage.blob_get
('<storage_account>'
,'<blob_container>'
,'events_pipe.csv'
,NULL::events
,options := azure_storage.options_csv_get(delimiter := '|' , header := 'true')
);
Zapytanie agregacji dotyczące zawartości obiektu blob
W tym przykładzie pokazano, jak można wykonywać operacje agregacji na informacjach przechowywanych w kontenerze obiektów blob bez konieczności importowania zawartości obiektu blob do tabel PostgreSQL.
<storage_account>
musi być ustawiona na nazwę konta magazynu. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową storage_account w tych skryptach.
<blob_container>
musi być ustawiona na nazwę kontenera obiektów blob. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową blob_container w tych skryptach.
SELECT event_type, COUNT(*) FROM azure_storage.blob_get
('<storage_account>'
,'<blob_container>'
,'events.csv'
, NULL::events)
GROUP BY event_type
ORDER BY 2 DESC
LIMIT 5;
Importowanie danych przy użyciu instrukcji COPY
W poniższym przykładzie pokazano importowanie danych z obiektu blob o nazwie events.csv
, który znajduje się w kontenerze <blob_container>
obiektów blob na koncie <storage_account>
usługi Azure Storage , za pomocą COPY
polecenia :
Utwórz tabelę zgodną ze schematem pliku źródłowego:
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
Użyj instrukcji , aby skopiować dane do tabeli docelowej. Określ, że pierwszy wiersz zawiera nagłówki kolumn.COPY events FROM 'https://<storage_account>.blob.core.windows.net/<blob_container>/events.csv' WITH (FORMAT 'csv', header);
Zapisywanie zawartości w obiekcie blob w kontenerze
Funkcja blob_put
komponuje zawartość jednego określonego obiektu blob (eventscopy.csv
w tym przypadku) i przekazuje ją do określonego kontenera <blob_container>
<storage_account>
magazynu. W tym przykładzie użyto blob_get
metody do skonstruowania zestawu pięciu wierszy, które następnie są przekazywane do blob_put
funkcji agregującej, która przekazuje je jako obiekt blob o nazwie eventscopy.csv
.
<storage_account>
musi być ustawiona na nazwę konta magazynu. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową storage_account w tych skryptach.
<blob_container>
musi być ustawiona na nazwę kontenera obiektów blob. Jeśli użyto poprzednich skryptów, ta wartość powinna być zgodna z dowolną wartością ustawioną na zmienną środowiskową blob_container w tych skryptach.
SELECT azure_storage.blob_put
('<storage_account>'
,'<blob_container>'
,'eventscopy.csv'
, top_5_events)
FROM (SELECT * FROM azure_storage.blob_get
('<storage_account>'
,'<blob_container>'
,'events.csv'
, NULL::events) LIMIT 5) AS top_5_events;
Eksportowanie danych przy użyciu instrukcji COPY
W poniższym przykładzie pokazano eksportowanie danych z tabeli o nazwie , do obiektu blob o nazwie events
events_exported.csv
, który znajduje się w kontenerze <blob_container>
obiektów blob na koncie <storage_account>
usługi Azure Storage , za pomocą COPY
polecenia :
Utwórz tabelę zgodną ze schematem pliku źródłowego:
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 );
Załaduj dane do tabeli. Uruchom instrukcje INSERT, aby wypełnić je kilkoma syntetycznymi wierszami lub użyj przykładu instrukcji IMPORT przy użyciu instrukcji COPY, aby wypełnić je zawartością przykładowego zestawu danych.
COPY
Użyj instrukcji , aby skopiować dane do tabeli docelowej. Określ, że pierwszy wiersz zawiera nagłówki kolumn.COPY events TO 'https://<storage_account>.blob.core.windows.net/<blob_container>/events_exported.csv' WITH (FORMAT 'csv', header);
Podziel się swoimi sugestiami i usterkami z zespołem produktu usługi Azure Database for PostgreSQL.