@tommy
複製操作只允許幾個簡單像DATETIME格式更改,NULL佔位符等轉換。
要廣泛地清理您的d ata,你可能需要編寫自己的程序並將結果轉儲回S3,然後才能將其複製到紅移中。
如果您的數據很小,您可以使用AWS SDK(可用Java,PHP和Python版本)編寫一個簡單的程序來執行ETL並將其加載到redshift中。我們使用Amazon EMR,HIVE和SerDe(JSON)編解碼器來創建邏輯HIVE表,使用HQL應用轉換,並轉儲清理後的數據返回到S3作爲TAB分隔文件。然後,我們使用標準的COPY命令將結果加載到紅移中。我們還使用Amazon Data Pipeline來編排和自動化此工作流程。
Ex。 HIVE腳本
add jar s3://elasticmapreduce/samples/hive-ads/libs/jsonserde.jar; --SerDe codec
CREATE EXTERNAL TABLE source_table_name (column_a string, column_b date) row format
serde 'com.amazon.elasticmapreduce.JsonSerde'
with serdeproperties (
'paths'='column_a, column_b'
) LOCATION 's3a://your-bucket-name/source-directory-path/';
CREATE EXTERNAL TABLE dest_table_name (column_a string, column_b date) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION 's3n://your-bucket-name/dest-directory-path/';
INSERT INTO dest_table_name select * from source_table_name;
當然,上面顯示的示例只是重新格式化數據。您可能需要根據您的用例添加額外的轉換。
希望這會有所幫助。
來源
2014-11-08 18:53:54
Jay