啟動服務(gpfdist)
因為gpload是對gpfdist的封裝,因此使用gpload之前必須開啟gpfdist的服務,不然無法使用
gpfdist -d /home/admin -p 8181 -l /tmp/gpfdist.log &
撰寫gpload的yml檔案
VERSION: 1.0.0.1
DATABASE: db_market
USER: testuser
HOST: 172.18.15.123
PORT: 5432
GPLOAD:
INPUT:
- SOURCE:
LOCAL_HOSTNAME:
- 172.18.0.0
PORT: 8080
FILE: ['E:\gpload_data\company\load3.dat']
- COLUMNS:
- id:
- base:
- name:
- FORMAT: TEXT
- DELIMITER: '$'
- QUOTE: '"'
- HEADER: FALSE
- ENCODING: UTF8
- ERROR_LIMIT: 0
OUTPUT:
- TABLE: syn_yuandian.company
- MODE: insert
執行命令
gpload -f member.yml
引數說明
VERSION: 1.0.0.1 --指定控制檔案schema的版本
DATABASE: db_name --指定連接資料庫的名字,如果沒有指定,由環境變數$PGDATABASE,或者通過gpload引數-d指定
USER: db_username --指定連接目標資料庫的用戶名,如果不使用超級管理員,服務引數gp_external_grant_privileges必須設定成on,
HOST: master_hostname --指定master主機名,也可以通過gpload的-h選項,或者環境變數$PGHOST指定
PORT: master_port --指定master的連接埠號,默認是5432,或者通過gpload命令的-p選項或者環境變數$PGPORT指定,
GPLOAD: --必須指定,表示裝載設定部分在它下面必須定義INPUT:和OUTPUT:兩個部分,
INPUT: --必須指定,這部分指定裝載資料的格式和位置
- SOURCE: --必須指定,定義source檔案的位置,每個輸入部分可以定義多個source部分, windows路徑的指定比較特別,比如c:\ 要寫成 c:/
LOCAL_HOSTNAME: --指定gpload運行的主機名稱和ip地址,如果有多塊網卡,可以同時使用它們,提高裝載速度,默認只使用首選主機名和IP,
- hostname_or_ip
PORT: http_port --指定gpfdist使用的埠,也可以選擇埠范圍,由系統選擇,如果同時指定,port設定優先級高,
| PORT_RANGE: [start_port_range, end_port_range]
FILE: --指定裝載資料檔案的位置,目錄或者命名管道,如果檔案使用gpzip或者bzip2進行了壓縮,它可以自動解壓,可以使用通配符*和C語言風格的關系匹配模式指定多個檔案,
- /path/to/input_file
- COLUMNS: --指定資料源的資料格式,如果沒有指定這部分,source表的列順序,數量,以及資料型別必須與目標表一致,
- field_name: data_type
- FORMAT: text | csv --指定檔案格式是text還是csv
- DELIMITER: 'delimiter_character' --指定文本資料域(列)之間的分割符,默認是|
- ESCAPE: 'escape_character' | 'OFF' --text定義轉義字符,text格式默認是\,在text格式中可以選擇off關掉轉義字符(web log處理時比較有用)
- NULL_AS: 'null_string' --指定描述空值的字串,text格式默認是\N,csv格式不使用轉義符號的空值,
- FORCE_NOT_NULL: true | false --csv格式,強制所有字符默認都用”“括起,因此不能有空值,如果兩個分割符之間沒有值,被當做0長度字串,認為值已經丟失,
- QUOTE: 'csv_quote_character' --csv指定轉義字符,默認是"
- HEADER: true | false --是否跳過資料檔案第一行,當做表頭
- ENCODING: database_encoding --指定資料源的字符集
- ERROR_LIMIT: integer --指定由于不符合格式資料記錄的上限,如果超過該上限,gpload停止裝載,否則正確記錄可以被裝載,錯誤記錄拋出寫入錯誤表,但它僅支持資料格式錯誤,不支持違背約束的問題
- ERROR_TABLE: schema.table_name --指定不符合格式要求記錄的錯誤表,如果指定的表不存在系統自動創建,
OUTPUT:
- TABLE: schema.table_name --指定裝載的目標表
- MODE: insert | update | merge --指定操作模式,默認是insert,merge操作不支持使用隨機分布策略的表,
- MATCH_COLUMNS: --為update操作和merge操作指定匹配條件,
- target_column_name
- UPDATE_COLUMNS: --為update操作和merge操作指定更新的列
- target_column_name
- UPDATE_CONDITION: 'boolean_condition' --指定where條件,目標表中只有滿足條件的記錄才能更改,(merge情況下,只有滿足條件的記錄才能insert)
- MAPPING: --指定source列和目標列的映射關系,
target_column_name: source_column_name | 'expression'
PRELOAD: --指定load之前的操作
- TRUNCATE: true | false --如果設定成true,裝載之前先洗掉目標表中所有記錄,再裝載
- REUSE_TABLES: true | false --設定成true,不會洗掉外部表物件會這中間表物件,從而提升性能,
SQL:
- BEFORE: "sql_command" --裝載操作開始前執行的SQL,比如寫日志表
- AFTER: "sql_command" --裝載操作之后執行的SQL,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/273189.html
標籤:其他
