【问题标题】:how to insert many records如何插入多条记录
【发布时间】:2015-10-04 01:12:32
【问题描述】:

当我在 sqlite 数据库中插入超过 500 条记录时,出现错误“复合 SELECT 中的术语太多”。我已经阅读了关于sqlite limit的详细信息

现在我想在数据库中插入超过 1000 条(比如 2000 种产品)记录。任何人都可以建议,如何编写查询以插入超过 1000 条记录。

这是我使用的插入查询:

INSERT INTO Product 
    SELECT 
       '4886229673836544' AS productId, 
       'Pen1' AS productName, 
       '10' As sellingPrice 
    UNION SELECT 
       '4780676557570048', 
       'Pen2', '10'........... 
    UNION SELECT 
       '4562973255270400', 
       'Pen1000', 
       '10'

【问题讨论】:

    标签: javascript sqlite cordova android-sqlite


    【解决方案1】:

    创建一个参数化查询,如下所示:

    INSERT INTO Products
    VALUES (@ProductId, @ProductName, @SellingPrice)
    

    并以如下方式使用(伪代码):

    create statement
    add parameter definitions to parameter collection
    prepare statement
    start transaction
    for each row you want to insert
       set parameter values
       execute statement
    
    commit transaction
    

    【讨论】:

    • @lopez:你为什么使用@?可以解释一下。函数 insertRecord (query) { var deferred = $q.defer(); db.transaction(function (tx) { if (query) { tx.executeSql(query, [], function () { console.log('插入成功'); deferred.resolve(); }); } else { deferred 。解决(); } });返回 deferred.promise; };
    • @YogeshN 您将问题标记为“android-sqlite”。为什么要显示 JavaScript 代码?
    • @cl 但我的问题出在 sqlite 中。我正在使用cordova作为android应用程序运行,所以我添加了android-sqlite标签。
    • @Yogesh。 SQLite 中的参数名称可以以 @ 或 : 开头
    • @Yogesh。实际上,您可以使用此处记录的更多前缀:sqlite.org/lang_expr.html#varparam
    猜你喜欢
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 2012-09-04
    相关资源
    最近更新 更多