2015-06-07 12 views
5

का उपयोग कर Redshift में डेटा लोड करें node.js का उपयोग कर अमेज़ॅन रेडशिफ्ट में डेटा डालने के कुछ तरीके क्या हैं?Node.js

यह बहुत सरल होना चाहिए, लेकिन मैं कुशल लोडिंग के लिए कोई ठोस उदाहरण नहीं ढूंढ पाया।

उत्तर

11

कर कि AWS node.js SDK का उपयोग कर S3 में डेटा लोड करने के लिए किया जाएगा का एक तरीका यह (वहाँ दस्तावेज में एक example), तो Redshift में node-pgCOPY करने के लिए डेटा का उपयोग करें:

var pg = require('pg'); 

var conString = "postgres://user:[email protected]:port/schema"; 

var client = new pg.Client(conString); 
    client.connect(function(err) { 
     if(err) { 
     return console.error('could not connect to postgres', err); 
     } 

     //assuming credentials are exported as enviornment variables, 
     //both CLI- and S3cmd-style are supported here. 
     //Also, you may want to specify the file's format (e.g. CSV), 
     //max errors, etc. 
     var copyCmd = 'copy my_redshift_table from \'s3://your_bucket/your_file\' credentials \'aws_access_key_id=' 
     + (process.env.AWS_ACCESS_KEY || process.env.AWS_ACCESS_KEY_ID) 
     + ';aws_secret_access_key=' 
     + (process.env.AWS_SECRET_KEY || process.env.AWS_SECRET_ACCESS_KEY) 
     + '\''; 

     client.query(copyCmd, function(err, result) { 
     if(err) { 
      return console.error('error running query', err); 
     } 
     logger.info("redhshift load: no errors, seem to be successful!"); 
     client.end(); 
     }); 
    }); 

ध्यान दें कि आप डॉन ' इसे चलाने के लिए किसी विशेष ड्राइवर की आवश्यकता नहीं है।

+0

अपना स्वयं का जवाब स्वीकार किया गया क्योंकि प्रश्न हल हो गया है और पर्याप्त समय बीत चुका है। हालांकि अगर कोई प्रकट होता है तो मैं खुशी से किसी भी बेहतर उत्तर में बदल जाऊंगा। – etov

+0

क्या आपके पास COPY आदेश जारी करने के लिए पीजी के 'पूल' मॉड्यूल का उपयोग कर कोई अनुभव है? – jdelman

+0

@ जेएस 87 - नहीं, मैंने पूल मॉड्यूल का उपयोग करने की कोशिश नहीं की। यदि आप करते हैं और यह सादा पीजी से बेहतर साबित होता है तो कृपया एक अतिरिक्त उत्तर पोस्ट करें! – etov