【问题标题】:Writing data to remote VPS database将数据写入远程 VPS 数据库
【发布时间】:2016-12-13 09:05:39
【问题描述】:

我有一个问题,可能有两种可能的方法来获得解决方案,我对任何一种都持开放态度。

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

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

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

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

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

【问题讨论】:

    标签: python postgresql pandas vps


    【解决方案1】:

    在调查了无数可能的解决方案后:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      • 2022-01-18
      • 1970-01-01
      相关资源
      最近更新 更多