小编Mar*_*ius的帖子

加速LINQ插入

我有一个CSV文件,我必须将其插入SQL Server数据库.有没有办法加快LINQ插入?

我创建了一个简单的Repository方法来保存记录:

    public void SaveOffer(Offer offer)
    {
        Offer dbOffer = this.db.Offers.SingleOrDefault (
             o => o.offer_id == offer.offer_id);

        // add new offer
        if (dbOffer == null)
        {
            this.db.Offers.InsertOnSubmit(offer);
        }
        //update existing offer
        else
        {
            dbOffer = offer;
        }

        this.db.SubmitChanges();
    }
Run Code Online (Sandbox Code Playgroud)

但是使用这种方法,程序比使用ADO.net SQL插入插入数据要慢得多(新的SqlConnection,新的SqlCommand用于选择是否存在,新的SqlCommand用于更新/插入).

在100k csv行上,ADO.net方式需要大约一个小时,而大约需要1分钟左右.对于2M csv行,ADO.net花了大约20分钟.LINQ在25分钟内增加了大约30,000的2M行.我的数据库有3个表,在dbml中链接,但其他两个表都是空的.测试是在所有表空的情况下进行的.

PS我曾尝试使用SqlBulkCopy,但我需要在将其插入数据库之前对Offer进行一些转换,我认为这违背了SqlBulkCopy的目的.

更新/编辑:18小时后,LINQ版本增加了大约200K行.

我也使用LINQ插件测试了导入,与ADO.net相比也非常慢.我没有看到插入/提交更改和选择/更新/插入/提交更改之间的巨大差异.

我仍然需要尝试批量提交,手动连接到db和编译的查询.

c# linq ado.net linq-to-sql

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

如何在外部填充Django模型?

从外部源将数据填充到Django模型中的最佳想法是什么?

例如,我有一个模型Run,并在XML文件中运行数据,该文件每周更改一次.

我是否应该创建一个视图并从curl cronjob调用该视图URL(其优点是可以随时读取该数据,而不仅仅是在运行cronjob时),或者创建一个python脚本并将该脚本安装为cron(使用DJANGO _SETTINGS在执行脚本之前_MODULE变量设置)?

python django django-models

8
推荐指数
1
解决办法
6805
查看次数

标签 统计

ado.net ×1

c# ×1

django ×1

django-models ×1

linq ×1

linq-to-sql ×1

python ×1