我在S3與列的文件例如像複製特定列
CustomerID CustomerName ProductID ProductName Price Date
現在紅移現有的SQL表結構LIK
Date CustomerID ProductID Price
反正是有在現有表結構中複製選定的數據? S3數據庫沒有任何標題,只是數據的順序。
我在S3與列的文件例如像複製特定列
CustomerID CustomerName ProductID ProductName Price Date
現在紅移現有的SQL表結構LIK
Date CustomerID ProductID Price
反正是有在現有表結構中複製選定的數據? S3數據庫沒有任何標題,只是數據的順序。
這是針對文件的列數多於目標裝載表的情況。
假設CustomerName和ProductName可以是NULL字段,您有兩個選項。
將數據加載到臨時表中。然後加入臨時表與基準數據將數據插入到
COPY staging-tablename
FROM 's3://<<YOUR-BUCKET>>/<<YOUR-FILE>>'
credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret- access-key>';
INSERT INTO main_tablename 選擇日期
,客戶ID
,產品ID
,價格 從登臺,表名ST;
TRUNCATE TABLE staging-tablename;
ANALYZE main_tablename;
這是針對文件的列數少於目標裝載表的情況。
假設CustomerName和ProductName可以是NULL字段,您有兩個選項。
選項#1 - 在表
COPY main_tablename
(Date
,CustomerID
,ProductID
,Price)
FROM 's3://<<YOUR-BUCKET>>/<<YOUR-FILE>>'
credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret- access-key>';
ANALYZE main_tablename;
選項#2直接加載 - 在一個臨時表加載數據。然後將參考數據加入到登臺表中,以便將數據插入到
中COPY staging-tablename
(Date
,CustomerID
,ProductID
,Price)
FROM 's3://<<YOUR-BUCKET>>/<<YOUR-FILE>>'
credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret- access-key>';
INSERT INTO
main_tablename
SELECT st.CustomerID
,cust.CustomerName
,st.ProductID
,prod.ProductName
,st.Price
,st.Date
FROM staging-tablename st
INNER JOIN customer-tablename cust ON (cust.CustomerID = st.CustomerID)
INNER JOIN product-tablename prod ON (prod.ProductID = st.ProductID);
TRUNCATE TABLE staging-tablename;
ANALYZE main_tablename;
反過來:目標表的列數少於S3中的源數據。在這種情況下,'copy'命令不起作用,因爲它在源數據中遇到的列數多於目標表中可用的列數。 – moertel
我很抱歉。你將不得不使用登臺表。我發佈了2個不同的答案。每個案件一個。對不起,我最初誤解了你的問題 – BigDataKid
這不是我的問題;我只是通過線程閱讀並注意到它。 :) – moertel