标签: bulkupdate

如何批量更新实体框架中的记录?

我正在尝试使用Entity Framework批量更新记录.我试过Entity Framework.Extensions Update方法.

Update方法能够使用相同的更新值集批量更新一组记录.

例:

           Id -  Quantity
Record 1 - A  -  10
Record 2 - B  -  20
Record 3 - C  -  30
Run Code Online (Sandbox Code Playgroud)

我们可以通过简单的调用批量更新所有上述记录

Records.Update(new => Record { Quantity = 100 });
Run Code Online (Sandbox Code Playgroud)

如何使用Entityframework.Extensions或以任何其他方法批量更新具有不同数量的每条记录,从而更快地完成批量更新?

c# linq entity-framework entity-framework-extended bulkupdate

16
推荐指数
4
解决办法
3万
查看次数

表值构造函数选择中的最大行数限制

我有一个Table Valued Constructor通过它选择周围的1 million记录.它将用于update另一个表.

SELECT *
FROM   (VALUES (100,200,300),
               (100,200,300),
               (100,200,300),
               (100,200,300),
               .....
               ..... --1 million records
               (100,200,300)) tc (proj_d, period_sid, val) 
Run Code Online (Sandbox Code Playgroud)

这是我的原始查询:https://www.dropbox.com/s/ezomt80hsh36gws/TVC.txt?dl = 0#

当我执行上述操作时,select它只是显示查询已完成但出现错误并显示任何错误消息.

在此输入图像描述

更新:尝试使用TRY/CATCH块捕获错误消息或错误号但不使用与先前映像相同的错误

BEGIN try
    SELECT *
    FROM   (VALUES (100,200,300),
                    (100,200,300),
                    (100,200,300),
                    (100,200,300),
                    .....
                    ..... --1 million records
                    (100,200,300)) tc (proj_d, period_sid, val) 
END try

BEGIN catch
    SELECT Error_number(),
           Error_message()
END catch 
Run Code Online (Sandbox Code Playgroud)

为什么它没有执行是否有表Valed构造函数的限制Select.我知道Insert它是1000,但我选择在这里.

sql sql-server sql-server-2012 bulkupdate

7
推荐指数
1
解决办法
357
查看次数

Spring Data Mongodb - 如何进行批量更新插入

我有一个相同集合的对象/域列表,如果 Mongodb 数据库中不存在,则应将其插入,否则应按 更新现有记录过滤器_id

虽然这可以使用 Spring data MongoRepositories 来完成,但它似乎是:

  1. 太慢了!!!(可能是一条一条保存记录!!!这个操作是Bulk执行的吗???)
  2. 如果有的话DuplicateKeyException,它会终止执行(不保存下一条记录,尽管我想忽略此类异常)

现在,如果我使用BulkOperations bulkOps = mongoTemplate.bulkOps(BulkMode.UNORDERED, collectionName),如果完整性破坏,它仍然会抛出相同的异常!尽管根据 Spring 文档,使用BulkMode.UNORDERED

并行执行批量操作。出现错误时,处理将继续。

考虑下面的代码:

BulkOperations bulkOps = mongoTemplate.bulkOps(BulkMode.UNORDERED, className);

        for (T entry : entries) {
            DBObject dbDoc = new BasicDBObject();
            mongoTemplate.getConverter().write(entry, dbDoc);
            Update update = Update.fromDBObject(dbDoc);
            bulkOps.updateOne(new Query(Criteria.where("_id").is(dbDoc.get("_id"))), update);
        }
        BulkWriteResult result = bulkOps.execute();
Run Code Online (Sandbox Code Playgroud)

当我执行上面的代码时,出现以下异常:

java.lang.IllegalArgumentException: Invalid BSON field name _class
at org.bson.AbstractBsonWriter.writeName(AbstractBsonWriter.java:516)
at com.mongodb.DBObjectCodec.encode(DBObjectCodec.java:129)
at com.mongodb.DBObjectCodec.encode(DBObjectCodec.java:61)
at org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:63)
at org.bson.codecs.BsonDocumentWrapperCodec.encode(BsonDocumentWrapperCodec.java:29)
at com.mongodb.connection.UpdateCommandMessage.writeTheWrites(UpdateCommandMessage.java:85)
at com.mongodb.connection.UpdateCommandMessage.writeTheWrites(UpdateCommandMessage.java:43)
at …
Run Code Online (Sandbox Code Playgroud)

spring mongodb spring-data-mongodb spring-boot bulkupdate

6
推荐指数
1
解决办法
2万
查看次数

如何基于Rails中的子查询来"update_all"

我试图在PostgreSQL中实现一些非常简单的Rails方式.

假设你有一个User3列模型id,cached_segment,cached_step.假设您已经有一个复杂的查询,它可以计算segment并动态地query封装在一个范围内User.decorate_with_segment_and_step.这将返回一个ActiveRecord关系,User与之相同,但增加了3个列:

id  cached_segment cached_step segment    step    cache_invalid
1   NULL           NULL        segment_1  step_1  TRUE
2   segment_1      step_2      segment_1  step_2  FALSE
3   ...
Run Code Online (Sandbox Code Playgroud)

我想生成的SQL是以下(PostgreSQL风格):

UPDATE users
SET cached_segment = segment_1
    cached_step    = step
FROM (#{User.decorate_with_segment_and_step.to_sql}) decorated_users
WHERE decorated_users.cache_invalid AND decorated_users.id = users.id
Run Code Online (Sandbox Code Playgroud)

理想情况下,我可以做类似的事情

User.
  from(User.decorate_with_segment_and_step, 'decorated_users').
  where(cache_invalid: true).
  update_all('cached_segment = segment, cached_step = step')
Run Code Online (Sandbox Code Playgroud)

我对上面的语句没有好运update_all,根据源代码,只是from在构建update语句时丢弃该子句.

注意:我知道我可以使用User.connection.execute(my_raw_sql_here),这就是我现在正在做的事情.目标是坚持使用ActiveRecord.

ruby-on-rails rails-activerecord bulkupdate

6
推荐指数
1
解决办法
239
查看次数

如果 MongoDB 批量更新适用于同一个文档,它们是否是原子的?

对于以下命令, wherequery只能匹配一个文档(请注意,bulkWrite()默认情况下是有序的):

final BulkWriteResult res = db.getCollection("mycol").bulkWrite(Arrays.asList(
    new UpdateOneModel<>(query,
        new Document("$addToSet", new Document("some_things", things))),
    new UpdateOneModel<>(query,
        new Document("$pull", new Document("some_things", otherthings)))));
Run Code Online (Sandbox Code Playgroud)

...我知道如果第一次更新成功而第二次失败(在正常情况下应该是不可能的),第一次更新仍将应用于文档,这意味着批量写入不是严格原子的。但是,假设两个查询都成功,操作是原子的吗?例如,其他写入是否可以在两个操作之间交错?

atomic atomicity mongodb bulkupdate interleave

5
推荐指数
0
解决办法
247
查看次数

通过 typeorm 中的原始查询批量更新

如何通过 typeorm 中的原始查询进行批量更新?
例如,我们有一个带有属性名称的模型User 如何在一次事务中更改少数用户的名称?

typeorm 版本:0.2.7
数据库:postgress

node.js bulkupdate typeorm

5
推荐指数
3
解决办法
1万
查看次数

为 postgresQL 序列化批量创建 updateOnDuplicate?

我知道 Sequelize Sequelize doc不支持 postgresQL 的 updateOnDuplicate ,那么有解决这个问题的方法吗?

可以通过“SQL命令”来实现吗?

postgresql bulkinsert node.js sequelize.js bulkupdate

5
推荐指数
2
解决办法
3万
查看次数

Mongodb 4.0 bulkWrite 在更新时非常慢

我有一个拥有超过 100 万用户的集合,我正在尝试更新某些事件的用户余额。

当我尝试更新例如 299 行时,它最多需要 15739.901 毫秒

服务器上没有高负载,它只是运行 mongo。我将数据库存储在 SSD Samsung evo 860 上,但 MongoDB 安装在 HDD 上。

这是我的功能:

async usersUpdate(usersToUpdate){
const updates = [];
   return new Promise(async (resolve, reject) => {
       users.forEach(user=>{

            updates.push(
               { "updateOne": {
                    "filter": { "userID": user.userID, 'balance':user.userBalance },
                    "update": { "$set": { "user.$.userBalance": user.newBalance } , "$addToSet":{'orders.$.orderID':user.OrderID} }
                }

               });

       }


       console.log('total updates' , updates.length);
       if (updates.length > 0){
           const DbConnection = await getConnection();
           const usersTable = DbConnection.collection('usersCollection');
           transactionsTable.bulkWrite(updates, {"ordered": false, writeConcern : { …
Run Code Online (Sandbox Code Playgroud)

performance mongodb node.js bulkupdate

5
推荐指数
0
解决办法
696
查看次数

使用Dexie,如何使用非主索引更新多个对象?

我想做类似的事情,并将其中具有“Paris”的myTable.update({ location: 'Paris'}, { location: '' }所有对象更改为设置为空字符串。myTablelocationlocation

location不是主键,因此在执行命令之前可以有任意数量的myTable具有= 'Paris' 的对象,但在执行命令之后location不应有= 'Paris' 的对象。location

我有 SQL 背景,所以这似乎是一个非常简单、基本的数据库函数。但Table.update() 的 Dexie 文档表明它只支持使用主键,因此最多只能更新一个对象。当然,除了循环多次调用来更新数据库之外,还有其他方法可以做到这一点吗?一些我没见过的命令?或者我是否无法理解一些我应该了解的 NoSql 数据库?

updates indexeddb bulkupdate dexie

5
推荐指数
1
解决办法
1588
查看次数

更新bulk_update中的auto_now字段

我正在使用 Django 2.2 并且我有一个模型auto_now modification_datetime字段的模型,我需要在bulk_update执行期间/之后仅针对真正更新的受影响的注册表进行更新。

是否可以auto_now通过执行仅更新受影响记录上的日期时间模型字段bulk_update

django django-models bulkupdate

5
推荐指数
1
解决办法
3430
查看次数