मैं एक प्रतिलिपि निर्देश के माध्यम से एस 3 से रेडशिफ्ट में एक स्टैगिंग टेबल लोड करना चाहता हूं और फिर कुछ फ़ील्ड का चयन करना और अंतिम तालिका बनाना चाहता हूं, लेकिन मुझे नहीं पता कि सभी संरचना को जानने के बिना एस 3 से फ़ाइल कैसे लोड करें।

मुझे एक उदाहरण के साथ समझाता हूँ:

मेरे पास s3 . में मेरी फाइल है

col1   col2   col3
a       1     b
b       4     c

मुझे केवल col2 के साथ एक अंतिम तालिका चाहिए, इसलिए मैं निम्न कार्य करता हूं:

CREATE TEMPORARY TABLE stg(col1 varchar, col2 integer, col3 varchar);
COPY stg FROM myfile
CREDENTIALS
'aws_access_key_id=***;aws_secret_access_key=***'
 NULL as '' IGNOREHEADER AS 1
;
create table FINAL as
select
              col2
from stg

और मुझे ऐसा कुछ चाहिए (इसलिए मुझे संरचना को जानने की आवश्यकता नहीं है, केवल इसमें col2 होगा):

CREATE TEMPORARY TABLE stg as (
COPY stg FROM myfile
CREDENTIALS
'aws_access_key_id=***;aws_secret_access_key=***'
 NULL as '' IGNOREHEADER AS 1
);

create table FINAL as
select
              col2
from stg
0
Xevi 23 सितंबर 2020, 16:50

1 उत्तर

सबसे बढ़िया उत्तर

आप सही प्रक्रिया कर रहे हैं।

COPY कमांड के माध्यम से डेटा लोड करते समय कॉलम को "स्किप ओवर" करना संभव नहीं है।

विकल्प यह होगा कि फाइलों को पूर्व-संसाधित किया जाए और डेटा को Redshift में लोड करने से पहले अवांछित स्तंभों को हटा दिया जाए।

0
John Rotenstein 24 सितंबर 2020, 00:38