本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 aws_s3.query_export_to_s3 函數匯出查詢資料
通過調用aws_s3.query_export_to_s3函SQL數將數據導出到 Amazon S3。
必要條件
使用 aws_s3.query_export_to_s3
函數前,請先完成下列必要條件:
-
如中將資料匯出至 Amazon S3 的概觀所述,安裝所需的 Postgre SQL 擴充功能。
-
決定要將資料匯出至 Amazon S3 的位置,如指定要匯出的 Amazon S3 檔案路徑中所述。
-
確認資料庫執行個體如 設定對 Amazon S3 儲存貯體的存取權 中所述,有對 Amazon S3 的匯出存取權。
下列範例會使用稱為 sample_table
的資料庫資料表。這些示例將數據導出到名為的存儲桶 amzn-s3-demo-bucket
。 示例表和數據是使用 psql 中的以下SQL語句創建的。
psql=> CREATE TABLE sample_table (bid bigint PRIMARY KEY, name varchar(80)); psql=> INSERT INTO sample_table (bid,name) VALUES (1, 'Monday'), (2,'Tuesday'), (3, 'Wednesday');
正在呼叫 aws_s3.query_export_to_s3
以下示範呼叫 aws_s3.query_export_to_s3 函數的基本方式。
這些範例會使用變數 s3_uri_1
來識別包含識別 Amazon S3 檔案資訊的結構。使用 aws_commons.create_s3_uri 函數來建立結構。
psql=> SELECT aws_commons.create_s3_uri( '
amzn-s3-demo-bucket
', 'sample-filepath', 'us-west-2' ) AS s3_uri_1 \gset
雖然下列兩個 aws_s3.query_export_to_s3
函數呼叫的參數有所不同,但這些範例的結果是相同的。sample_table
表的所有行都導出到名為的存儲桶 amzn-s3-demo-bucket
.
psql=> SELECT * FROM aws_s3.query_export_to_s3('SELECT * FROM sample_table', :'s3_uri_1'); psql=> SELECT * FROM aws_s3.query_export_to_s3('SELECT * FROM sample_table', :'s3_uri_1', options :='format text');
參數說明如下:
-
'SELECT * FROM sample_table'
— 第一個參數是包含SQL查詢的必要文字字串。Postgre SQL 引擎會執行此查詢。查詢結果會複製到其他參數中識別的 S3 儲存貯體。 -
:'s3_uri_1'
– 此參數是識別 Amazon S3 檔案的結構。此範例使用變數來識別先前建立的結構。您可以改為透過在aws_commons.create_s3_uri
函數呼叫中包含內嵌aws_s3.query_export_to_s3
函數呼叫來建立結構,如下所示。SELECT * from aws_s3.query_export_to_s3('select * from sample_table', aws_commons.create_s3_uri('
amzn-s3-demo-bucket
', 'sample-filepath', 'us-west-2') ); -
options :='format text'
—options
參數是包含 Postgre SQLCOPY
引數的選擇性文字字串。複製程序會使用 Postgre SQL COPY指令的引數和格式。
如果指定的檔案不存在於 Amazon S3 儲存貯體內,就會建立。如果檔案已存在,即會遭到覆寫。以下是存取 Amazon S3 中已匯出資料的語法。
s3-
region
://bucket-name
[/path-prefix
]/file-prefix
較大的匯出項目會儲存在多個檔案中,每個檔案的大小上限約為 6 GB。其他檔案名稱具有相同的檔案字首,但會加上 _part
。XX
代表 2,接著是 3,以此類推 舉例來說,假設您要指定儲存資料檔案的路徑,如下所示。XX
s3-us-west-2://
amzn-s3-demo-bucket
/my-prefix
如果匯出必須建立三個資料檔案,則 Amazon S3 儲存貯體會包含下列資料檔案。
s3-us-west-2://
amzn-s3-demo-bucket
/my-prefix s3-us-west-2://amzn-s3-demo-bucket
/my-prefix_part2 s3-us-west-2://amzn-s3-demo-bucket
/my-prefix_part3
如需此函數的完整參考以及其他呼叫方式,請參閱 aws_s3.query_export_to_s3。如需存取 Amazon S3 中檔案的詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的檢視物件。
匯出至使用自訂分隔符號的CSV檔案
下列範例示範如何呼叫使用自訂分隔符號來將資料匯入檔案的 aws_s3.query_export_to_s3 函數。此範例使用 Postgre SQL COPY
SELECT * from aws_s3.query_export_to_s3('select * from basic_test', :'s3_uri_1', options :='format csv, delimiter $$:$$');
利用編碼匯出至二進位檔案
下列範例示範如何呼叫 aws_s3.query_export_to_s3 函數來將資料匯出至使用 Windows-1253 編碼的二進位檔案。
SELECT * from aws_s3.query_export_to_s3('select * from basic_test', :'s3_uri_1', options :='format binary, encoding WIN1253');