Bulk Insert for cordovaSQLite
Bulk Insert for cordovaSQLite
cordovaSQLite有批量插入吗?我有很多数据,我想将其保存在sqlite Db中。
我现在的代码是
var query = "INSERT INTO Card (CardId, CardSetId, FrontText, BackText, ControlType, CardLevel, IsDirty, ChangedAt, Active) VALUES (?,?,?,?,?,?,?,?,?)";
for (var i = 0; i < cardList.length; i++) {
$cordovaSQLite.execute(db, query, [cardList[i].CardId, cardList[i].CardSetId, cardList[i].FrontText, cardList[i].BackText, cardList[i].ControlType, cardList[i].CardLevel, cardList[i].IsDirty, cardList[i].ChangedAt, cardList[i].Active]);
}
它可以工作,但非常非常慢!
当我使用此代码时:
var query = "INSERT INTO Card (CardId, CardSetId, FrontText, BackText, ControlType, CardLevel, IsDirty, ChangedAt, Active) VALUES ";
var data = [];
var rowArgs = [];
cardList.forEach(function (card) {
rowArgs.push("(?,?,?,?,?,?,?,?,?)");
data.push(card.CardId);
data.push(card.CardSetId);
console.log(card.CardSetId);
data.push(card.FrontText);
data.push(card.BackText);
data.push(card.ControlType);
data.push(card.CardLevel);
data.push(card.IsDirty);
data.push(card.ChangedAt);
data.push(card.Active);
});
query += rowArgs.join(", ");
$cordovaSQLite.execute(db, query, [data]).then(function (res) {
console.log("inserted");
}, function(err) {
console.dir(err);
});
然后我收到以下错误:sqlite3_step失败:非空约束失败:卡集ID
但是在数据数组中,CardSetId 不为空!
有没有办法让它更快,或者用批量插入来做?
谢谢
你可以尝试使用 cordova-sqlite-porter。使用 importJsonToDb(( 将您的插入作为 JSON 结构传递,它将优化插入到 SQLite 数据库中。
示例项目演示了插入 15,000+ 条记录。在三星 Galaxy S4 上,使用单个 SQL 插入语句执行此操作大约需要 5 分钟/300 秒,但优化的 JSON 等效项(使用 UNION SELECT - 有关信息请参阅此处(在同一设备上大约需要 3 秒 - 快 100 倍。
相关文章:
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Is onfling available for html, html5
- Setting default onclick behavior for <img> tag in gene
- 我的javascript for循环不起作用
- For循环冻结Javascript
- 如何在for循环中添加事件侦听器
- Javascript setTimeout for an array
- 双“for”循环(循环)
- 引用vue.js中v-for中的上一个值
- javascript for循环不起作用
- for循环中的javascript if语句找不到==
- GWT (or javascript) library for couchDB
- Javascript在for循环中等待处理请求
- Livereload for node.js.有可能吗
- jQuery setTimeOut: in for-loop
- 我没有'I don’我不理解for在循环中的用途
- 如何知道javascript for语句中的所有结果是否都是错误的
- For循环在Jquery中只运行一次
- Bulk Insert for cordovaSQLite