Note 1. The original requirement was to "import Excel files" as described in the text above. In the actual application, the Excel sheet is converted into a CSV file using a npm module and stored in the Object Store, but I will skip that part and explain how to upload the CSV file and import it. Note 2: This blog is for SAP Cloud Platform Cloud foundry on AWS, I think the same method can be used on Azure, but I have not checked. |
const csvSync = require('csv-parse/lib/sync');
let csvdata = fs.readFileSync('/app/public/temp/' + req.file.filename);
let csvarray = csvSync(csvdata); //Convert csv file to array
..........
var sql = 'INSERT INTO "HCIMPORTSAMPLE_HDI_DB_1"."hcimportsample.db::testtable" VALUES(?,?,?,?,?,?,?,?,?,?);';
var stmt = conn.prepare(sql);
for (let i=0;i<csvarray.length;i++){
try {
stmt.exec([csvarray[i][0],csvarray[i][1],csvarray[i][2],csvarray[i][3],csvarray[i][4],csvarray[i][5],csvarray[i][6],csvarray[i][7],csvarray[i][8],csvarray[i][9]]);
} catch (err) {
console.log("Insert error --- ", i.toString());
console.log("SQL=", sql);
console.log("DB Error: SQL Execution --- ", err);
return;
}
}
In this case, I am using AWS S3 with Object Store, and the information needed to access S3 in the text described by Maxime Simon can be viewed as Sensitive Data when the Object Store is bound to the application.
var AWS = require('aws-sdk');
let csvdata = fs.readFileSync('/app/public/temp/' + req.file.filename);
const credentials = new AWS.Credentials({ accessKeyId: vcap_services.objectstore[0].credentials.access_key_id, secretAccessKey: vcap_services.objectstore[0].credentials.secret_access_key });
AWS.config.credentials = credentials;
AWS.config.update({ region: vcap_services.objectstore[0].credentials.region });
var s3 = new AWS.S3();
var params = {
Bucket: vcap_services.objectstore[0].credentials.bucket,
Key: req.file.filename
};
params.Body = csvdata;
var putObjectPromise = s3.putObject(params).promise();
putObjectPromise.then(function (data) {
var sql = "IMPORT FROM CSV FILE 's3-" + vcap_services.objectstore[0].credentials.region + "://" +
vcap_services.objectstore[0].credentials.access_key_id + ":" + vcap_services.objectstore[0].credentials.secret_access_key + "@" +
vcap_services.objectstore[0].credentials.bucket + "/" + req.file.filename + "' INTO " +
'"HCIMPORTSAMPLE_HDI_DB_1"."hcimportsample.db::testtable";';
var stmt = conn.prepare(sql);
try {
stmt.exec();
} catch (err) {
console.log("IMPORT ERROR --- ");
console.log("SQL=", sql);
console.log("DB Error: SQL Execution --- ", err);
}
return;
}).catch(function (err) {
console.log(err);
return;
});
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
22 | |
16 | |
11 | |
10 | |
9 | |
9 | |
7 | |
7 | |
7 | |
5 |