gpt4 book ai didi

javascript - 带 LIMIT 的 MySQL 查询并按 block 更新数据

转载 作者:行者123 更新时间:2023-11-29 16:00:51 27 4
gpt4 key购买 nike

我的 mysql 数据库中有一个表,其中包含列 iddrivers_license_number。现在 drivers_license_number 列中的数据以明文形式存储,我想对其进行加密。

该表包含大约 400000 条记录。我已阅读有关 LIMIT 和 OFFSET 问题的问题,并尝试在我的查询中使用后期行查找。

所以首先我需要从数据库获取数据,然后加密正确的字段并用这个加密字段更新数据库。我不明白,如何组织我的代码以将带有限制和偏移量的参数发送到数据库。在这种情况下我需要循环工作吗?

function getUpdatedEncryptedField(db_table_name, field_name) {
return getDataFromDb(db_table_name, field_name).then(function(result){
return encryptData(result, field_name).then(function (result){
var promises = result.map(function(item) {
var data = [item[field_name], item.id];
return updateFieldNameData(db_table_name, field_name, data);
});
return q.all(promises);
});
});
}

第一次通过后,我将获得例如前 1000 条记录,以及如何继续获得另外 1000 行?

function getDataFromDb(db_table_name, field_name, limit, offset) {
var sql = 'SELECT ds.id, ' + field_name + ' FROM ( SELECT id FROM ' + db_table_name + 'WHERE ' + field_name +
' IS NOT NULL ORDER BY id LIMIT ' + limit + ', ' + offset + ') d JOIN ' + db_table_name + ' ds ON ds.id = d.id ORDER BY ds.id;'
return db.modio.executeSql(sql);
}

最佳答案

您可以使用承载/高阶函数将 block 更新为 1000,并获取接下来的 1000 条记录,直到 400000,如下所示:

函数 getUpdatedEncryptedField(db_table_name, field_name) {
var idFrom = 0;
var idTo = 1;
返回函数 getDataFromDB(db_table_name, field_name){
idFrom = idTo;
idTo += 1000;
console.log(
id 范围为 ${idFrom}-${idTo}`); //调用你的数据库来获取记录 } }

// assign high order func to updateChunks var, which is again a func
var updateChunks = getUpdatedEncryptedField('studentsDB','creditCard')

// so each time you execute updateChunks() the values idFrom & idTo are updated
// updateChunks()
// id range is 1-1001
// updateChunks()
// id range is 1001-2001
// and so on

// create a loop until you get all the table records, e.g.
// pay attention to define 'i' with let and not with var because of async loop
for(let i=0; i <= 400000/1000; i++){
// call the updateChunk func here
// at eaach itteration it will ask for the next chunk of records
updateChunks()
}

`

当然,您应该稍微更新一下您的 mysql 查询,以获取从 - 到 的 Id 范围,这超出了问题范围。

希望有帮助,祝你好运。

关于javascript - 带 LIMIT 的 MySQL 查询并按 block 更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56210906/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com