使用Objective.js将数组数据批量插入mysql数据库

使用Objective.js将数组数据批量插入mysql数据库,mysql,node.js,knex.js,objection.js,Mysql,Node.js,Knex.js,Objection.js,我有一个数组 newData = [{ sId: 'XXXXXX', itemlName: 'LSストレッ', iCode: 'XXXXXX', iType: '', skus: 'XXXXXXX', iLevel: 'L2', cCode: '88', cName: 'Other', sCode: '999', sName: 'No Control', pLengthCode: '988', core: 'N', sCode: '1', dCode: 'XX', gDeptCode: 'XX'

我有一个数组

newData = [{ sId: 'XXXXXX', itemlName: 'LSストレッ', iCode: 'XXXXXX', iType: '', skus: 'XXXXXXX', iLevel: 'L2', cCode: '88', cName: 'Other', sCode: '999', sName: 'No Control', pLengthCode: '988', core: 'N', sCode: '1', dCode: 'XX', gDeptCode: 'XX', gDeptName: 'Women\\\'s Items', rCode: 'jqs' },{ sId: 'XXXXXX', itemlName: 'LSストレッ', iCode: 'XXXXXX', iType: '', skus: 'XXXXXXX', iLevel: 'L2', cCode: '88', cName: 'Other', sCode: '999', sName: 'No Control', pLengthCode: '988', core: 'N', sCode: '1', dCode: 'XX', gDeptCode: 'XX', gDeptName: 'Women\\\'s Items', rCode: 'jqs' }]
我想使用objective.js将
newData
插入mysql数据库。但是当我运行我的节点应用程序时,我得到了一个错误消息:


错误:批插入仅适用于Postgresql

我的插入代码是-:

samplemodel.query().insert( newData );

如何使用Objective.js在mysql数据库中批量插入数组数据?

错误:批量插入仅适用于Postgresql

这意味着你需要Postgres而不是Mysql来让它工作

编辑1:

从文档中:

如果您使用的是Postgres,则插入会分批进行,以获得最大的成功 演出在其他数据库上,需要一次插入一行 时间这是因为postgresql是唯一一个 返回所有插入行的标识符,而不仅仅是第一行或第二行 最后一个

这意味着,如果您使用的是mysql,您应该这样做

samplemodel.query().insert(data);
用于“newData”数组中的每个元素。

您可以调用

samplemodel.query().insertWithRelated(newData)


如果需要,它将使用多个查询,并可用于所有数据库。

诀窍是将insert语句转换为字符串并执行原始sql

差不多


让insertQuery=samplemodel.query().insert(newData);
让insertRes=wait knex.raw(insertQuery.toString())


附言:如果这不是一个好的做法,我会感谢你让我知道

因此,由于mysql的限制,无法减少查询数量

我会循环它,将它插入承诺数组并执行它抛出
Promise.all

...
let insertPromises = []
for(let item of newData){
    insertPromises.push(samplemode.query().insert(item))
}

Promise.all(insertPromises).then(() => { ... })
...

如果我将此方法与
$query
$relatedQuery
一起使用,我建议使用事务来确保数据完整性

对不起,这不是问题的答案。为什么不?这似乎有助于解决问题,因为您的答案并没有解决问题,即:使用MySQL批量插入。OP将Mysql指定为一个标记。文档中指出,无法使用Mysql插入批处理,因此唯一的解决方案是逐个插入。您能给出一个使用promise.all的事务示例吗?