2015-06-07 20 views
5

Một số cách chèn dữ liệu vào Amazon Redshift bằng cách sử dụng node.js là gì?Nạp dữ liệu vào Redshift bằng Node.js

Điều này khá đơn giản, nhưng tôi không thể tìm thấy bất kỳ ví dụ cụ thể nào để tải hiệu quả.

Trả lời

11

Một cách để làm điều đó sẽ được nạp dữ liệu vào S3 sử dụng AWS node.js SDK (có một example trong tài liệu), sau đó sử dụng node-pg để COPY dữ liệu vào chuyển đỏ:

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(); 
     }); 
    }); 

Lưu ý rằng bạn không' t cần bất kỳ trình điều khiển đặc biệt cho điều này để chạy.

+0

Câu trả lời được chấp nhận bởi vì câu hỏi được giải quyết và đã đủ thời gian. Tuy nhiên tôi sẽ vui vẻ thay đổi bất kỳ câu trả lời tốt hơn nếu một trong những xuất hiện. – etov

+0

Bạn có kinh nghiệm sử dụng mô-đun 'pool' của pg để phát hành lệnh COPY không? – jdelman

+0

@ js87 - không, tôi không thử dùng mô-đun hồ bơi. Nếu bạn làm thế và nó trở nên tốt hơn pg đồng bằng, hãy đăng câu trả lời bổ sung! – etov

Các vấn đề liên quan