Aracılığıyla paylaş


pg_azure_storage uzantısı

Önemli

PostgreSQL için Azure Cosmos DB artık yeni projeler için desteklenmemektedir. Bu hizmeti yeni projeler için kullanmayın. Bunun yerine, şu iki hizmetlerden birini kullanın:

pg_azure_storage uzantısı, birden çok dosya biçimindeki verileri doğrudan Azure blob depolamadan PostgreSQL için Azure Cosmos DB kümenize yüklemenize olanak tanır. Uzantının etkinleştirilmesi COPY komutunun yeni özelliklerinin de kilidini açar. Erişim düzeyi "Özel" veya "Blob" olan kapsayıcılar için özel erişim anahtarı eklenmesi gerekir.

Uzantıyı aşağıdakini çalıştırarak oluşturabilirsiniz:

SELECT create_extension('azure_storage');

azure_storage.account_add

İşlev, depolama hesabına erişim eklemeye olanak tanır.

azure_storage.account_add
        (account_name_p text
        ,account_key_p text);

Bağımsız değişkenler

account_name_p

Azure blob depolama (ABS) hesabı tüm ABS nesnelerinizi içerir: bloblar, dosyalar, kuyruklar ve tablolar. Depolama hesabı, ABS'niz için https üzerinden dünyanın her yerinden erişilebilen benzersiz bir ad alanı sağlar.

account_key_p

Azure blob depolama (ABS) erişim anahtarlarınız, depolama hesabınızın kök parolasına benzer. Erişim anahtarlarınızı korumak için her zaman dikkatli olun. Anahtarlarınızı güvenli bir şekilde yönetmek ve döndürmek için Azure Key Vault'ı kullanın. Hesap anahtarı postgres süper kullanıcısı tarafından erişilebilen bir tabloda depolanır azure_storage_admin ve bu yönetici izinleri verilen tüm roller. Hangi depolama hesaplarının mevcut olduğunu görmek için account_list işlevini kullanın.

azure_storage.account_remove

İşlev, depolama hesabına hesap erişiminin iptal edilmesini sağlar.

azure_storage.account_remove
        (account_name_p text);

Bağımsız değişkenler

account_name_p

Azure blob depolama (ABS) hesabı tüm ABS nesnelerinizi içerir: bloblar, dosyalar, kuyruklar ve tablolar. Depolama hesabı, ABS'niz için https üzerinden dünyanın her yerinden erişilebilen benzersiz bir ad alanı sağlar.

azure_storage.account_user_add

işlevi, bir rol için depolama hesabına erişim eklemeye olanak tanır.

azure_storage.account_user_add
        ( account_name_p text
        , user_p regrole);

Bağımsız değişkenler

account_name_p

Azure blob depolama (ABS) hesabı tüm ABS nesnelerinizi içerir: bloblar, dosyalar, kuyruklar ve tablolar. Depolama hesabı, ABS'niz için https üzerinden dünyanın her yerinden erişilebilen benzersiz bir ad alanı sağlar.

user_p

Kullanıcı tarafından oluşturulan rol kümede görünür.

Not

account_user_add,account_add,account_remove, işlevleri içinaccount_user_remove kümedeki her bir düğüm için izinlerin ayarlanması gerekir.

azure_storage.account_user_remove

işlevi, bir rolün depolama hesabına erişimini kaldırmaya olanak tanır.

azure_storage.account_user_remove
        (account_name_p text
        ,user_p regrole);

Bağımsız değişkenler

account_name_p

Azure blob depolama (ABS) hesabı tüm ABS nesnelerinizi içerir: bloblar, dosyalar, kuyruklar ve tablolar. Depolama hesabı, ABS'niz için https üzerinden dünyanın her yerinden erişilebilen benzersiz bir ad alanı sağlar.

user_p

Kullanıcı tarafından oluşturulan rol kümede görünür.

azure_storage.account_list

işlevi, Azure blob depolamaya erişimi olan hesabı ve rolü listeler.

azure_storage.account_list
        (OUT account_name text
        ,OUT allowed_users regrole[]
        )
Returns TABLE;

Bağımsız değişkenler

account_name

Azure blob depolama (ABS) hesabı tüm ABS nesnelerinizi içerir: bloblar, dosyalar, kuyruklar ve tablolar. Depolama hesabı, ABS'niz için https üzerinden dünyanın her yerinden erişilebilen benzersiz bir ad alanı sağlar.

allowed_users

Azure blob depolamaya erişimi olan kullanıcıları listeler.

Dönüş türü

TABLO

azure_storage.blob_list

işlevi, bir kullanıcı kapsayıcısı içindeki kullanılabilir blob dosyalarını özellikleriyle listeler.

azure_storage.blob_list
        (account_name text
        ,container_name text
        ,prefix text DEFAULT ''::text
        ,OUT path text
        ,OUT bytes bigint
        ,OUT last_modified timestamp with time zone
        ,OUT etag text
        ,OUT content_type text
        ,OUT content_encoding text
        ,OUT content_hash text
        )
Returns SETOF record;

Bağımsız değişkenler

account_name

, storage account name Azure depolama verileriniz için https üzerinden dünyanın her yerinden erişilebilen benzersiz bir ad alanı sağlar.

container_name

Bir kapsayıcı, bir grup blob'u bir dosya sistemindeki bir dizine benzer şekilde düzenler. Depolama hesabında sınırsız sayıda kapsayıcı olabilir ve her kapsayıcı sınırsız sayıda blob depolayabilir. Kapsayıcı adı, kapsayıcıyı veya bloblarını ele almak için kullanılan benzersiz URI'nin bir parçasını oluşturacağı için geçerli bir DNS adı olmalıdır. Kapsayıcıyı adlandırırken şu kuralları izleyin:

  • Kapsayıcı adları 3 ila 63 karakter uzunluğunda olabilir.
  • Kapsayıcı adları bir harf veya sayı ile başlamalıdır ve yalnızca küçük harf, sayı ve tire (-) karakteri içerebilir.
  • Kapsayıcı adlarında ardışık iki veya daha fazla tire karakterine izin verilmez.

Kapsayıcının URI'si şuna benzer: https://myaccount.blob.core.windows.net/mycontainer

önek

Blob kapsayıcısından eşleşen dize baş harfleriyle dosya döndürür.

yol

Azure blob dizininin tam yolu.

bayt

Dosya nesnesinin bayt cinsinden boyutu.

last_modified

Dosya içeriği en son ne zaman değiştirildi?

etag

Güncelleştirmeler sırasında iyimser eşzamanlılık için bir ETag özelliği kullanılır. Bir kaydın en son güncelleştirildiği zamanı depolayan Timestamp adlı başka bir özellik olduğundan bu bir zaman damgası değildir. Örneğin, bir varlığı yükler ve güncelleştirmek isterseniz, ETag'in şu anda depolanmış olanla eşleşmesi gerekir. Aynı öğeyi düzenleyen birden çok kullanıcınız varsa, onların birbirlerinin değişikliklerinin üzerine yazılmasını istemediğinizden, uygun ETag'in ayarlanması önemlidir.

content_type

Blob nesnesi, sabit, ham verilerin dosya benzeri bir nesnesi olan bir blobu temsil eder. Bunlar metin veya ikili veri olarak okunabilir veya readableStream'e dönüştürülebilir, böylece yöntemleri verileri işlemek için kullanılabilir. Bloblar, JavaScript yerel biçiminde olması gerekmeyecek verileri temsil edebilir.

content_encoding

Azure Depolama, blob üzerinde content-encoding özelliği tanımlamanızı sağlar. Sıkıştırılmış içerik için özelliğini GZIP olarak ayarlayabilirsiniz. Tarayıcı içeriğe eriştiğinde, içeriği otomatik olarak açar.

content_hash

Bu karma, aktarım sırasında blobun bütünlüğünü doğrulamak için kullanılır. Bu üst bilgi belirtildiğinde, depolama hizmeti gönderilen karma ile gelen karmayı denetler. İki karma eşleşmezse, işlem 400 (Hatalı İstek) hata koduyla başarısız olur.

Dönüş türü

SETOF kaydı

Not

İzinler Artık bu depolama için Özel ve Blob erişim düzeylerine ayarlanmış kapsayıcıları listeleyebilirsiniz, ancak yalnızca citus userrolü kendisine verilmiş olan azure_storage_admin olarak listeleyebilirsiniz. adlı supportyeni bir kullanıcı oluşturursanız, kapsayıcı içeriğine varsayılan olarak erişmesine izin verilmez.

azure_storage.blob_get

işlevi, içeri aktarma işleminden önce verilerin filtrelenmesi veya değiştirilmesi konusunda ek destekle birlikte kapsayıcı içinden dosya \ dosyalarının içeriğinin yüklenmesine olanak tanır.

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
        )
RETURNS SETOF record;

İşlevin, çıkış biçimi kaydını rahatça tanımlamanızı sağlayan rec parametresini içeren aşırı yüklenmiş bir sürümü vardır.

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
        )
RETURNS SETOF anyelement;

Bağımsız değişkenler

account

Depolama hesabı, Azure Depolama verileriniz için dünyanın her yerinden HTTPS üzerinden erişilebilen benzersiz bir ad alanı sağlar.

kapsayıcı

Bir kapsayıcı, bir grup blob'u bir dosya sistemindeki bir dizine benzer şekilde düzenler. Depolama hesabında sınırsız sayıda kapsayıcı olabilir ve her kapsayıcı sınırsız sayıda blob depolayabilir. Kapsayıcı adı, kapsayıcıyı veya bloblarını ele almak için kullanılan benzersiz URI'nin bir parçasını oluşturacağı için geçerli bir DNS adı olmalıdır.

yol

Kapsayıcıda var olan blob adı.

Rec

Kayıt çıkış yapısını tanımlayın.

Kod çözücü

Kod Çözücü'ün otomatik (varsayılan) veya aşağıdaki değerlerden herhangi birine ayarlanabileceği blob biçimini belirtin

kod çözücü açıklaması

Biçim Açıklama
csv PostgreSQL COPY tarafından kullanılan virgülle ayrılmış değerler biçimi
tsv Sekmeyle ayrılmış değerler, varsayılan PostgreSQL COPY biçimi
ikili İkili PostgreSQL COPY biçimi
text Tek bir metin değeri içeren bir dosya (örneğin, büyük JSON veya XML)

sıkıştırma

Sıkıştırma biçimini tanımlar. Kullanılabilir seçenekler şunlardır: auto, gzip & none. seçeneğinin auto kullanılması (varsayılan), dosya uzantısına (.gz == gzip) göre sıkıştırmayı tahmin eder. seçeneği none uzantıyı yoksaymaya zorlar ve kodu çözmeyi denemez. gzip, gzip kod çözücüsü kullanmaya zorlarken (standart olmayan bir uzantıya sahip bir gzipped dosyanız olduğunda için). Şu anda uzantı için başka sıkıştırma biçimlerini desteklemiyoruz.

seçenekler

Özel üst bilgileri, özel ayırıcıları, kaçış karakterlerini vb. işlemek için PostgreSQL'deki options komuta benzer şekilde COPY çalışır, parametre işlevi blob_get için kullanılır.

Dönüş türü

SETOF Kaydı / anyelement

Not

blob_get içinde parametre olarak adlandırılan ve değer oluşturmaya yardımcı olan dört yardımcı program işlevi vardır. Her yardımcı program işlevi, adıyla eşleşen kod çözücü için belirlenir.

azure_storage.options_csv_get

işlevi, csv içeriğinin kodunu çözmek için yararlı olan blob_get içinde parametre olarak adlandırılan bir yardımcı program işlevi işlevi görür.

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
        )
Returns jsonb;

Bağımsız değişkenler

sınırlayıcı

Dosyanın her satırı (satırı) içindeki sütunları ayıran karakteri belirtir. Varsayılan değer, metin biçiminde bir sekme karakteri, CSV biçiminde virgüldür. Tek bir baytlık karakter olmalıdır.

null_string

Null değeri temsil eden dizeyi belirtir. Varsayılan değer, metin biçiminde \N (ters eğik çizgi-N) ve CSV biçiminde tırnak içinde olmayan boş bir dizedir. Boş dizeleri boş dizelerden ayırmak istemediğiniz durumlarda metin biçiminde bile boş dizeyi tercih edebilirsiniz.

Dosyanın, dosyadaki her sütunun adlarını içeren bir üst bilgi satırı içerdiğini belirtir. Çıktıda, ilk satır tablodaki sütun adlarını içerir.

alıntı

Bir veri değeri alıntılandığında kullanılacak alıntı karakterini belirtir. Varsayılan değer çift tırnaktır. Tek bir baytlık karakter olmalıdır.

escape

QUOTE değeriyle eşleşen bir veri karakterinden önce görünmesi gereken karakteri belirtir. Varsayılan değer, QUOTE değeriyle aynıdır (böylece alıntılama karakteri verilerde görünürse iki katına çıkar). Tek bir baytlık karakter olmalıdır.

force_not_null

Belirtilen sütunların değerlerini null dizeyle eşleştirin. Null dizenin boş olduğu varsayılan durumda, boş değerlerin tırnak içinde yer almadığında bile null yerine sıfır uzunluklu dizeler olarak okunduğu anlamına gelir.

force_null

Belirtilen sütunların değerlerini, tırnak içinde belirtilmiş olsa bile null dizeyle eşleştirin ve eşleşme bulunsa bile değeri NULL olarak ayarlayın. Null dizenin boş olduğu varsayılan durumda, tırnak içine alınmış boş bir dizeyi NULL'a dönüştürür.

content_encoding

Dosyanın encoding_name kodlandığını belirtir. Seçenek atlanırsa geçerli istemci kodlaması kullanılır.

Dönüş türü

jsonb

azure_storage.options_copy

işlevi, blob_get içinde parametre olarak adlandırılan bir yardımcı program işlevi işlevi görür.

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
        )
Returns jsonb;

Bağımsız değişkenler

sınırlayıcı

Dosyanın her satırı (satırı) içindeki sütunları ayıran karakteri belirtir. Varsayılan değer, metin biçiminde bir sekme karakteri, CSV biçiminde virgüldür. Tek bir baytlık karakter olmalıdır.

null_string

Null değeri temsil eden dizeyi belirtir. Varsayılan değer, metin biçiminde \N (ters eğik çizgi-N) ve CSV biçiminde tırnak içinde olmayan boş bir dizedir. Boş dizeleri boş dizelerden ayırmak istemediğiniz durumlarda metin biçiminde bile boş dizeyi tercih edebilirsiniz.

üst bilgi

Dosyanın, dosyadaki her sütunun adlarını içeren bir üst bilgi satırı içerdiğini belirtir. Çıktıda, ilk satır tablodaki sütun adlarını içerir.

alıntı

Bir veri değeri alıntılandığında kullanılacak alıntı karakterini belirtir. Varsayılan değer çift tırnaktır. Tek bir baytlık karakter olmalıdır.

escape

QUOTE değeriyle eşleşen bir veri karakterinden önce görünmesi gereken karakteri belirtir. Varsayılan değer, QUOTE değeriyle aynıdır (böylece alıntılama karakteri verilerde görünürse iki katına çıkar). Tek bir baytlık karakter olmalıdır.

force_quote

Belirtilen her sütundaki null olmayan tüm değerler için alıntı yapmaya zorlar. NULL çıkış hiçbir zaman tırnak içinde değildir. * belirtilirse, null olmayan değerler tüm sütunlarda tırnak içine alınır.

force_not_null

Belirtilen sütunların değerlerini null dizeyle eşleştirin. Null dizenin boş olduğu varsayılan durumda, boş değerlerin tırnak içinde yer almadığında bile null yerine sıfır uzunluklu dizeler olarak okunduğu anlamına gelir.

force_null

Belirtilen sütunların değerlerini, tırnak içinde belirtilmiş olsa bile null dizeyle eşleştirin ve eşleşme bulunsa bile değeri NULL olarak ayarlayın. Null dizenin boş olduğu varsayılan durumda, tırnak içine alınmış boş bir dizeyi NULL'a dönüştürür.

content_encoding

Dosyanın encoding_name kodlandığını belirtir. Seçenek atlanırsa geçerli istemci kodlaması kullanılır.

Dönüş türü

jsonb

azure_storage.options_tsv

işlevi, blob_get içinde parametre olarak adlandırılan bir yardımcı program işlevi işlevi görür. Tsv içeriğinin kodunu çözmek için kullanışlıdır.

azure_storage.options_tsv
        (delimiter text DEFAULT NULL::text
        ,null_string text DEFAULT NULL::text
        ,content_encoding text DEFAULT NULL::text
        )
Returns jsonb;

Bağımsız değişkenler

sınırlayıcı

Dosyanın her satırı (satırı) içindeki sütunları ayıran karakteri belirtir. Varsayılan değer, metin biçiminde bir sekme karakteri, CSV biçiminde virgüldür. Tek bir baytlık karakter olmalıdır.

null_string

Null değeri temsil eden dizeyi belirtir. Varsayılan değer, metin biçiminde \N (ters eğik çizgi-N) ve CSV biçiminde tırnak içinde olmayan boş bir dizedir. Boş dizeleri boş dizelerden ayırmak istemediğiniz durumlarda metin biçiminde bile boş dizeyi tercih edebilirsiniz.

content_encoding

Dosyanın encoding_name kodlandığını belirtir. Seçenek atlanırsa geçerli istemci kodlaması kullanılır.

Dönüş türü

jsonb

azure_storage.options_binary

işlevi, blob_get içinde parametre olarak adlandırılan bir yardımcı program işlevi işlevi görür. İkili içeriğin kodunu çözmek için kullanışlıdır.

azure_storage.options_binary
        (content_encoding text DEFAULT NULL::text)
Returns jsonb;

Bağımsız değişkenler

content_encoding

Dosyanın encoding_name kodlandığını belirtir. Bu seçenek atlanırsa, geçerli istemci kodlaması kullanılır.

Dönüş Türü

jsonb

Not

İzinler Artık bu depolama için Özel ve Blob erişim düzeylerine ayarlanmış kapsayıcıları listeleyebilirsiniz, ancak yalnızca citus userrolü kendisine verilmiş olan azure_storage_admin olarak listeleyebilirsiniz. Destek adlı yeni bir kullanıcı oluşturursanız kapsayıcı içeriğine varsayılan olarak erişmesine izin verilmez.

Örnekler

Kullanılan örnekler, farklı kullanım örneklerinin kapsamına eklemek için karşıya yüklenen özel dosyalarla örnek Azure depolama hesabını (pgquickstart) kullanır. Kullanılan örnek kümesinde kullanılan tabloyu oluşturarak başlayabiliriz.

CREATE TABLE IF NOT EXISTS public.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
        );

Depolama hesabının erişim anahtarını ekleme (erişim düzeyi için zorunlu = özel)

Örnek, Postgres için Azure Cosmos DB kümesindeki bir oturumdan sorgulamaya erişim elde etmek için depolama hesabına erişim anahtarı eklemeyi gösterir.

SELECT azure_storage.account_add('pgquickstart', 'SECRET_ACCESS_KEY');

İpucu

Depolama hesabınızda Erişim anahtarları'nı açın. Depolama hesabı adını kopyalayın ve key1 bölümünden Anahtarı kopyalayın (önce anahtarın yanındaki Göster'i seçmeniz gerekir).

Azure portalındaki bir Azure Blob Depolama sayfasının Güvenlik + ağ > Erişim anahtarları bölümünün ekran görüntüsü.

Depolama hesabının erişim anahtarını kaldırma

Örnekte bir depolama hesabının erişim anahtarının kaldırılması gösterilmektedir. Bu eylem, kapsayıcıdaki özel demette barındırılan dosyalara erişimin kaldırılmasına neden olur.

SELECT azure_storage.account_remove('pgquickstart');

Azure Blob depolamaya rol erişimi ekleme

SELECT * FROM azure_storage.account_user_add('pgquickstart', 'support');

Azure Blob depolamada erişimi olan tüm rolleri listeleme

SELECT * FROM azure_storage.account_list();

Azure Blob depolamada erişime sahip rolleri kaldırma

SELECT * FROM azure_storage.account_user_remove('pgquickstart', 'support');

Kapsayıcı içindeki public nesneleri listeleme

SELECT * FROM azure_storage.blob_list('pgquickstart','publiccontainer');

Kapsayıcı içindeki private nesneleri listeleme

SELECT * FROM azure_storage.blob_list('pgquickstart','privatecontainer');

Not

Erişim anahtarı eklemek zorunludur.

Nesneleri genel kapsayıcı içinde belirli dize baş harfleriyle listeleme

SELECT * FROM azure_storage.blob_list('pgquickstart','publiccontainer','e');

Alternatif olarak

SELECT * FROM azure_storage.blob_list('pgquickstart','publiccontainer') WHERE path LIKE 'e%';

Kapsayıcıdaki bir nesneden içerik okuma

blob_get işlevi blob depolamadan bir dosya alır. blob_get verilerin nasıl ayrıştırıldığını bilmesi için dosyayla aynı biçime sahip bir değer (NULL::table_name) geçirebilirsiniz.

SELECT * FROM azure_storage.blob_get
        ('pgquickstart'
        ,'publiccontainer'
        ,'events.csv.gz'
        , NULL::events)
LIMIT 5;

Alternatif olarak, yan tümcesindeki FROM sütunları açıkça tanımlayabiliriz.

SELECT * FROM azure_storage.blob_get('pgquickstart','publiccontainer','events.csv')
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;

Kod çözücü seçeneğini kullanma

Örnekte seçeneğin kullanımı gösterilmektedir decoder . Normalde biçim, dosyanın uzantısından çıkarılır, ancak dosya içeriğinin eşleşen bir uzantısı olmadığında kod çözücü bağımsız değişkenini geçirebilirsiniz.

SELECT * FROM azure_storage.blob_get
        ('pgquickstart'
        ,'publiccontainer'
        ,'events'
        , NULL::events
        , decoder := 'csv')
LIMIT 5;

Kod çözücü seçeneğiyle sıkıştırmayı kullanma

Örnek, standart bir .gz uzantısı olmadan gzip sıkıştırılmış bir dosyada gzip sıkıştırmasını kullanmayı zorlamayı gösterir.

SELECT * FROM azure_storage.blob_get
        ('pgquickstart'
        ,'publiccontainer'
        ,'events-compressed'
        , NULL::events
        , decoder := 'csv'
        , compression := 'gzip')
LIMIT 5;

Filtrelenmiş içeriği içeri aktar & csv biçimindeki nesneden yüklemeden önce değiştir

Örnekte, kapsayıcıdaki nesneden içeri aktarılan içeriği SQL tablosuna yüklemeden önce filtreleme ve değiştirme olanağı gösterilmektedir.

SELECT concat('P-',event_id::text) FROM azure_storage.blob_get
        ('pgquickstart'
        ,'publiccontainer'
        ,'events.csv'
        , NULL::events)
WHERE event_type='PushEvent'
LIMIT 5;

Üst bilgiler, özel ayırıcılar, kaçış karakterleri içeren dosyadan içerik sorgulama

sonucunu bağımsız değişkene geçirerek azure_storage.options_copyoptions özel ayırıcılar ve kaçış karakterleri kullanabilirsiniz.

SELECT * FROM azure_storage.blob_get
        ('pgquickstart'
        ,'publiccontainer'
        ,'events_pipe.csv'
        ,NULL::events
        ,options := azure_storage.options_csv_get(delimiter := '|' , header := 'true')
        );

Kapsayıcıdaki bir nesnenin içeriğinde toplama sorgusu

Bu şekilde verileri içeri aktarmadan sorgulayabilirsiniz.

SELECT event_type,COUNT(1) FROM azure_storage.blob_get
        ('pgquickstart'
        ,'publiccontainer'
        ,'events.csv'
        , NULL::events)
GROUP BY event_type
ORDER BY 2 DESC
LIMIT 5;

Sonraki adımlar