我想同时使用sqlite3在其中一列中插入/更新,而其他列不受影响。我当前的代码只是创建一个新行,而不是更新现有行。
编辑:重要的列是Strength, Dexterity, Speed, Defense
,由{data_type}
决定。任何其他列都可以覆盖。
async function csvToSql(data_path, data_type) {
const date = moment().format("DD-MM-YYYY")
let result = await csv().fromFile(data_path);
db.serialize(function () {
// Create table
db.run(`CREATE TABLE IF NOT EXISTS daily(Date DATE, Name VARCHAR(255) UNIQUE, Profile TEXT, Strength Int, Speed Int, Dexterity Int, Defense Int)`, (err) => {
if (err) {
console.log(err);
}
});
//Populate
let query = db.prepare(`INSERT OR REPLACE INTO daily (Date, Name, Profile, ${data_type} ) VALUES (?, ?, ?, ?)`);
if (statType.includes(data_type)) {
for (let i = 0, j = result.length; i < j; i++) {
query.run(date, result[i].Player, result[i]['Player Profile'], result[i].Contribution, (err) => {
if (err) {
console.log(err);
}
})
}
}
query.finalize();
});
}