HybridDBforPG中如何按照資料內容定製輸出到OSS檔名和檔案個數
使用HybridDB PG的外部表輸出資料到OSS時,一般會輸出成多個檔案(檔案個數一般與節點數個數一致)。如何輸出為一個檔案呢?步驟如下:
1)建立示例表:
create table t3 (a1 text, a2 text ,a3 text, a4 text) distributed by (a1);
insert into t3 values(`xxxxxxx`,`yyyyy`,`zzzzz`,`wwwww`);
insert into t3 select * from test;
insert into t3 select * from test;
insert into t3 select * from test;
insert into t3 select * from test;
insert into t3 select * from test;
insert into t3 select * from test;
2)建立外部表寫表,按源資料表的結構建立外部表。注意:
- 相對於本地源表的表結構,需要新增一個臨時欄位,例如dummy_col,最好作為第一個欄位。
- 新增外部表引數 file_name_generator_col = dummy_col 指定臨時欄位名;output_generator_col=false 指定這個臨時欄位中的資料不寫入到檔案中
drop external table test_oss_write;
create writable external table test_oss_write(
dummy_col text,
A1 text,
A2 text,
A3 text,
A4 text
)
location(`oss://oss-cn-shanghai.aliyuncs.com
dir=output_x_file/
id=xxx
key=xxx
bucket=osshuadong2
output_generator_col=false
file_name_generator_col=dummy_col
`) FORMAT `csv` ( DELIMITER `,`)
distributed by (dummy_col)
;
3) 定製 SQL 將test資料寫入到 oss 中
set rds_write_oss_file_by_distribution_column=on;
insert into test_oss_write
Select key,a1,a2,a3,a4 from
(
select
floor(random()*(5-1)+1)::int::text || `e` as key,
A1,A2,A3,A4
from t3
)t order by key;
注意:
- 使用隨機數來指定產生的檔案個數,這裡我們需要輸出4個檔案,則使用 floor(random()*(5-1)+1)
- 寫入檔案時,給到寫入節點的資料需要按照key有序,我們使用了order by, 也可以使用視窗函式。
最後OSS上能看到4個檔案,且檔案內容不包含用來定製檔名的虛擬列
$osscmd ls oss://osshuadong2/output_x_file
prefix list is:
object list is:
2018-04-18 15:54:18 2.46KB Standard oss://osshuadong2/output_x_file/1e_577353258534704.1
2018-04-18 15:54:18 2.46KB Standard oss://osshuadong2/output_x_file/2e_577353258534704.2
2018-04-18 15:54:18 2.51KB Standard oss://osshuadong2/output_x_file/3e_577353258534704.2
2018-04-18 15:54:18 2.34KB Standard oss://osshuadong2/output_x_file/4e_577353258534704.1
osscmd get oss://osshuadong2/output_x_file/3e_577353258534704.2 b.txt
cat b.txt
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
xxxxxxx,yyyyy,zzzzz,wwwww
使
相關文章
- python中按照資料夾中檔案的排列順序讀取檔案內容Python
- 將dataGridView內容匯出到Excel檔案ViewExcel
- tee - 重定向輸出到多個檔案
- 如何將資料熱匯出到檔案
- java檔案相關(檔案追加內容、檔案內容清空、檔案內容讀取)Java
- 檔案批次查詢複製匯出,按檔名批次查詢檔案,按檔案內容批次查詢檔案
- Centos8中如何更改資料夾中多個檔案的副檔名CentOS
- cat-合併輸出多個檔案的內容
- 如何使用python指令碼定時清空檔案內容?Python指令碼
- 將程式碼中的除錯資訊輸出到日誌檔案中除錯
- LIUNUX如何擷取txt檔案中的內容,並建立新檔案UX
- 阿里雲數倉Dataworks資料匯出到檔案step by step阿里
- Python求取資料夾內的檔案數量、子資料夾內的檔案數量Python
- node中給檔案追加內容
- python中修改檔案行內容Python
- 獲取一個資料夾下所有指定字尾名(.java)的檔案(包括子資料夾中的內容),並將這些檔案的絕對路徑寫入到一個文字檔案中Java
- Java讀取本地檔案內容並輸出Java
- 如何編輯PDF檔案的內容?
- 如何使用htmlq提取html檔案內容HTML
- macOS鎖定檔案和資料夾Mac
- 批量提取資料夾內檔名
- html如何根據檔案路徑顯示檔案內容(pdf)HTML
- 檔案內容比較
- whatsns模板檔案中如何呼叫指定類目下的內容
- 【打包1】內容、嵌入資源等檔案的生成操作,屬性如何設定
- 使用ln同步檔案內容,支援忽略檔案
- 複習Linux如何顯示檔案指定行數的內容Linux
- KITTI資料集說明(檔案內容,標籤, calib 相機引數)
- 批處理bat 批次更改一個資料夾下所有檔名的部分內容.BAT
- vim內替換檔案內容
- 大檔案資料如何做到安全傳輸?
- 超大型的檔案資料如何傳輸?
- 資料檔案在網路“裸奔”,如何在網際網路中進行檔案傳輸?
- 修改所有xml檔案中的某些內容XML
- 在Linux中,如何使用grep命令查詢檔案中的內容?Linux
- 如何統計 Linux 中檔案和資料夾/目錄的數量Linux
- 如何批量複製多個檔案到多個目錄中(批量複製檔案,多對多檔案高效操作的方法)
- win10按照時間搜檔案如何操作 win10按照時間怎麼搜尋程式和檔案Win10