标签: bulk

更新SELECT语句的结果

Oracle允许您更新SELECT语句的结果.

UPDATE (<SELECT Statement>)
SET <column_name> = <value>
WHERE <column_name> <condition> <value>;
Run Code Online (Sandbox Code Playgroud)

我想这可以用于根据另一个表中匹配行的值更新一个表中的列.

如何调用此功能,它是否可以有效地用于大型更新,当SELECT连接多个表时是否有效,如果是,如何?

sql oracle bulk sql-update

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

NHibernate似乎没有批量插入PostgreSQL

我正在使用NHibernate与PostgreSQL数据库连接.

背景

我做了一些简单的测试......似乎需要2秒才能坚持300条记录.我有一个具有相同功能的Perl程序,但是发出直接SQL,只占70%的时间.我不确定这是否是预期的.我认为C#/ NHibernate会更快或至少相提并论.

问题

我的一个观察是(show_sql打开),NHibernate发出INSERT几百次,而不是进行处理多行的批量INSERT.请注意我自己分配主键,而不是使用"本机"生成器.

这是预期的吗?反正我是否可以让它发出批量INSERT语句?在我看来,这可能是我可以加速表现的领域之一.

postgresql nhibernate insert bulk

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

如何使用Active Admin执行批量操作

在Active Admin中,是否可以为索引页面中的每个项目添加一个复选框(这并不难),并添加某种菜单以对所有选定项目执行批量操作,例如一次删除所有选定项目.

我找不到另一种方法来创建自定义页面,但我宁愿不这样做; 对我来说似乎有点矫枉过正.

ruby-on-rails bulk activeadmin

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

在Java中实现定期刷新的Cache

我的用例是在存储在持久数据库中的数据上维护内存缓存.

我使用数据填充UI上的条目列表/映射.在任何给定时间,UI上显示的数据应尽可能地更新(这可以通过缓存的刷新频率来完成).

常规高速缓存实现与此特定高速缓存之间的主要区别在于,它需要定期刷新所有元素,因此与LRU类型的高速缓存非常不同.

我需要在Java中实现这个实现,如果有任何现有的框架可以用来构建它们,那将是很好的.

我已经探索了Google Guava缓存库,但它更适合每个条目刷新而不是批量刷新.没有简单的API可以在整个缓存上进行刷新.

任何帮助将受到高度赞赏.

另外,如果有可能逐步做刷新,它应是伟大的,因为同时刷新整个缓存它产生唯一的限制是,如果高速缓存的大小是非常大的,那么内存堆应该ATLEAST的两倍缓存以加载新条目并用新映射替换旧映射.如果缓存是增量的,或者有一个分块刷新(刷新大小相同),那就太好了.

java caching bulkinsert bulk

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

如何处理包含500多个项目的Symfony表单集合

我有表单集合,需要处理超过500个实体实例.在我将超时增加到60秒并且增加了max_input_vars形式工作之后,但是它的速度有多慢.渲染形式很慢,但提交这个大形式是痛苦的屁股.

我正在考虑创建纯HTML格式,但还有其他一些缺点作为验证.那么,是否有任何正确的方法通过symfony形式处理大量数据?

控制器:

public function ratesCardAction() {
    $bannerList = $this->data;

    $em = $this->getDoctrine()->getManager();
    $form = $this->createForm(new AdvertiserRatesType($bannerList));
    if ('POST' == $this->getRequest()->getMethod()) {
        $form->handleRequest($this->getRequest());
        $advertiserCampaign = $form->getData();
        if ($form->isValid()) {
            foreach ($advertiserCampaign['campaignsAdZones'] as $campaignAdZone) {
               $em->persist($campaignAdZone);
            }
            $em->flush();
        }
    }

    return array(
        'form'   => $form->createView()
    );
}



class AdvertiserRatesType extends AbstractType {

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder ->add('campaignsAdZones', 'collection', array(
            'type'   => new AdvertiserRatePerCountryType(),
            'data'   => $this->rates,
            'empty_data'  => null,
            'options'  => array(
                'attr' => array('class' => 'campaignAdZoneItem') …
Run Code Online (Sandbox Code Playgroud)

php forms bulkinsert bulk symfony

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

SQL Server 2012中的内存不足异常

我试图执行一个包含大约1000000个简单UPDATE查询的大型sql脚本.

此脚本文件的总大小约为100 MB.

当我运行这个脚本时,我得到一个Out Of Memory异常.

当我将文件分成10 MB的块时,我可以运行它们中的每一个.

但是,为了方便起见,我想只有一个我可以同时运行的脚本.我可以引入任何语句,以便SQL Server在运行每个查询后释放分配的内存,这样我就可以立即执行这个大型脚本吗?

sql sql-server bulk sql-update

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

关于集合的Restful PATCH以批量更新排序参数

我们有一个包含许多实体("项目")的大列表("集合").这一切都通过RESTful接口进行管理.可以通过项目上的order属性手动对项目进行排序.查询时,数据库会根据订单列出集合中的所有项目.

现在,我们希望将此机制公开给用户,他们可以在一个调用中更新所有项目的完整排序.数据库不允许order相同collection_id(唯一collection_id+ order)相同,因此您不能(绝对不应)逐个更新所有项目.

我想到了PATCH请求,但没有考虑资源,所以

PATCH /collections/123/items/
Run Code Online (Sandbox Code Playgroud)

身体像

[
  {'id': 1, 'order': 3},
  {'id': 2, 'order': 1},
  {'id': 3, 'order': 2}
]
Run Code Online (Sandbox Code Playgroud)

但是,如何处理此批量类型的请求的错误?当部分更新成功时,如何发送响应?是否允许PATCH集合而不是资源?如果这是错误的想法,那么更好的方法是什么?

sorting rest bulk

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

RESTful API和批量操作

我有一个中间层,它在共享数据库上执行CRUD操作.当我将产品转换为.NET Core时,我认为我也会考虑使用REST作为API,因为CRUD应该是它的功能.似乎REST对于单个记录操作来说是一个很好的解决方案,但是当我想要删除1000条记录时会发生什么?

每个专业的多用户应用程序都会有一些乐观并发检查的概念:如果没有一些反馈,你就不能让一个用户消除另一个用户的工作.据我了解,REST使用HTTP ETag头记录处理此问题.如果客户端发送的ETag与服务器的标记不匹配,则发出412 Precondition Failed.到现在为止还挺好.但是,当我想删除1,000条记录时,我会使用什么?1,000次单独调用的来回时间是相当可观的,那么REST如何处理涉及Optimistic Concurrency的批处理操作?

rest api-design http bulk optimistic-concurrency

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

C#使用SQLBulkCopy或等效库高效批量删除50000条记录

我正在使用这个库来批量执行批量删除,如下所示:

  while (castedEndedItems.Any())
  {
    var subList = castedEndedItems.Take(4000).ToList();
    DBRetry.Do(() => EFBatchOperation.For(ctx, ctx.SearchedUserItems).Where(r => subList.Any(a => a == r.ItemID)).Delete(), TimeSpan.FromSeconds(2));
    castedEndedItems.RemoveRange(0, subList.Count);
    Console.WriteLine("Completed a batch of ended items");
  }
Run Code Online (Sandbox Code Playgroud)

如您所见,我一次删除了一批 4000 个项目,并将它们作为参数传递给查询...

我正在使用这个库来执行批量删除:

https://github.com/MikaelEliasson/EntityFramework.Utilities
Run Code Online (Sandbox Code Playgroud)

然而,这样的性能绝对是糟糕的......我测试了几次应用程序并删除了 80000 条记录,例如需要 40 分钟!?

我应该注意,我要删除的参数 (ItemID) 是 varchar(400) 类型,并且出于性能原因对其进行了索引....

是否有任何其他库可以使用或调整此查询以使其工作得更快,因为目前的性能绝对糟糕..:/

c# asp.net asp.net-mvc bulk bulk-delete

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

Django:批量上传并确认

还有一个关于风格和良好实践的问题。我将展示的代码可以工作并执行功能。但我想知道它是否可以作为解决方案,或者它可能太丑陋了?

由于问题有点晦涩难懂,我最后再给出一些观点。

那么,用例。

我有一个包含这些物品的网站。有一个按用户添加项目的功能。现在我想要一个通过 csv 文件添加多个项目的功能。

应该如何运作?

  1. 用户转到特殊上传页面。
  2. 用户选择 csv 文件,单击上传。
  3. 然后他被重定向到显示 csv 文件内容的页面(以表格形式)。
  4. 如果用户可以,他单击“是”(具有“confirm_items_upload”值的按钮),文件中的项目将添加到数据库中(如果可以)。

我已经看到了 django 批量上传的例子,它们看起来很清楚。但我没有找到带有中间“验证确认”页面的示例。那么我是怎么做到的:

  1. views.py中:上传csv文件页面的视图
def upload_item_csv_file(request):
    if request.method == 'POST':
        form = UploadItemCsvFileForm(request.POST, request.FILES)
        if form.is_valid():
            uploaded_file_name = handle_uploaded_item_csv_file(request.FILES['item_csv_file'])
            request.session['uploaded_file'] = uploaded_file_name
            return redirect('show_upload_csv_item')
    else:
        form = UploadItemCsvFileForm()
    return render(request, 'myapp/item_csv_upload.html', {'form': form})
Run Code Online (Sandbox Code Playgroud)
  1. 在utils.py中:handle_uploaded_item_csv_file - 只需保存文件并返回文件名
def handle_uploaded_item_csv_file(f):
    now = datetime.now()
    # YY_mm_dd_HH_MM
    dt_string = now.strftime("%Y_%m_%d_%H_%M")
    file_name = os.path.join(settings.MEDIA_ROOT, f"tmp_csv/item_csv_{dt_string}.csv")
    with open(file_name, 'wb+') as destination:
        for chunk in f.chunks():
            destination.write(chunk)

    return f"tmp_csv/item_csv_{dt_string}.csv" …
Run Code Online (Sandbox Code Playgroud)

python django bulk django-views

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