将数据写入远程VPS数据库

时间:2016-12-13 09:05:40

标签: python postgresql pandas vps

我有一个问题可能有两种可能的方法来获得解决方案,我可以接受。

我使用第三方应用程序每天将数据下载到pandas数据帧中,然后我将其写入本地postgres数据库。数据帧很大,但由于数据库是本地的,我只需使用df.to_sql即可在几秒钟内完成。

问题是现在我已将数据库移动到远程Linux服务器(VPS)。相同的to_sql现在需要一个多小时。我为chunksize尝试了各种值,但这并没有多大帮助。

如果我只是在该远程服务器上安装第三方应用程序,但服务器操作系统不使用GUI,则这不会成为问题。有没有办法在服务器上运行第三方应用程序,即使它需要GUI? (注意:它是一个Windows应用程序,所以我使用wine在我的本地linux机器上运行它,并且可能也需要在服务器上执行此操作。)

如果无法运行需要在VPS上使用GUI的应用程序,那么我应该如何以不超过一小时的方式从本地计算机将这些数据帧写入VPS?我希望有一些方法可以用更小的部分编写数据帧,或者使用to_sql以外的其他东西。

一个非常笨重,不优雅的解决方案是将数据帧写入csv文件,使用ftp将它们上传到服务器,然后在服务器上运行单独的python脚本以将数据保存到数据库。我想这会奏效,但它肯定不理想。

1 个答案:

答案 0 :(得分:0)

在研究了无数可能的解决方案之后:

  • 创建隧道以将端口从本地计算机转发到服务器,以便它可以访问第三方应用程序。
  • 修改我的所有python代码,使用psycopg2代替pandas to_sql
  • 手动将数据从本地计算机插入服务器
  • 为可在服务器上运行的第三方应用创建docker容器
  • 和其他几个死胡同或错综复杂的解决方案

最后,解决方案是使用wine在服务器上安装第三方应用程序,然后使用-X标志ssh进入它。因此,我可以在服务器上运行时访问本地计算机上的gui。