Python3.SQLAlchemy1.3提高pandas.DataFrame的SQLSever插入速度

  <pandas.DataFrame>to_sql()方法导入数据库很方便,但是比较慢(参考另一篇具体插入方法)。在最近一次大量数据导入SQLSever时让我尤其不耐烦,尝试过给to_sql()方法传入method="multi"​不知道为啥竟然报错了。

  百度pandas to_sql 加速的结果只有一篇利用sqlalchemycopy_from方法加速PostgreSQL数据插入的教程,但是对于SQLSever并不适用。

  但是终于还是被我找到了!

SQLAlchemy1.3改进

  是的,只要在用sqlalchemycreate_engine函数时传入fast_executemany=True参数就可以大大提高SQLSever插入速度,原来要花5分钟现在只要5秒钟,爽歪歪。

  但是要注意的是当设置fast_executemany=True时,同样不要指定to_sql()method。根据官方文档,默认的method是一行一行地插入,而method="multi"​是一条SQL语句插入所有数据, 而结果和想象中有些不一样。所以优化方案交给底层,咱不要瞎操心了吧。


  这个新参数实际上并不是create_engine自己的,而是将传给底层pyodbc库的,所以直接搜还真很难搜到,我是在stackoverflow上一个类似问题底下最后一个新回答发现的,感动得我立即注册账号给他点赞(遗憾的是新人好像点不了赞)。

猜你喜欢

转载自blog.csdn.net/modabao/article/details/89446077