使用python或SQL在表或数据库中存储和更新数据点/表/csv表的最有效方法?

使用python或SQL在表或数据库中存储和更新数据点/表/csv表的最有效方法?,python,sql,postgresql,csv,google-cloud-platform,Python,Sql,Postgresql,Csv,Google Cloud Platform,我只是边走边学习,所以我不确定如何实现我想要的,因为我不知道我可以使用的所有工具。我不知道该怎么问这个问题,但问题来了 我正在使用谷歌云计算引擎从各种传感器/来源收集数据 数据使用python和pandas以以下格式保存到csv文件中 Data1.csv Date Data1 01-Jan-2000 122.1 ... 09-Oct-2020 991.2 Date Data2 01-Jan-2000 101.1 ... 09-Oct-2020 331.2

我只是边走边学习,所以我不确定如何实现我想要的,因为我不知道我可以使用的所有工具。我不知道该怎么问这个问题,但问题来了

我正在使用谷歌云计算引擎从各种传感器/来源收集数据

数据使用python和pandas以以下格式保存到csv文件中

Data1.csv

Date         Data1
01-Jan-2000  122.1
...
09-Oct-2020  991.2
Date         Data2
01-Jan-2000  101.1
...
09-Oct-2020  331.2
Date         Data1 Data2 ......
01-Jan-2000  122.1 101.1 .....
...
09-Oct-2020  991.2 331.2 ....
Data2.csv

Date         Data1
01-Jan-2000  122.1
...
09-Oct-2020  991.2
Date         Data2
01-Jan-2000  101.1
...
09-Oct-2020  331.2
Date         Data1 Data2 ......
01-Jan-2000  122.1 101.1 .....
...
09-Oct-2020  991.2 331.2 ....
总是有一个日期列和一个唯一的数据列

有时是每天,有时是每周。不同的数据集具有不同的分辨率、频率等

当我得到数据表时,我总是得到整个历史,因为有时历史数据中可能会有需要更新的变化

现在,我要做的是将所有csv文件保存到服务器上,然后将它们逐个下载到我的计算机上,并使用python使用完整的外部联接合并它们

df = pd.merge(Data1df,Data2df,how='outer',left_index=True,right_index=True)
我在循环中一个接一个地这样做,直到我创建了一个大数据帧

bigframe.csv

Date         Data1
01-Jan-2000  122.1
...
09-Oct-2020  991.2
Date         Data2
01-Jan-2000  101.1
...
09-Oct-2020  331.2
Date         Data1 Data2 ......
01-Jan-2000  122.1 101.1 .....
...
09-Oct-2020  991.2 331.2 ....
我需要一个大框架中的大框架表来处理

当我每天更新数据时,我会一个接一个地重复上面的所有步骤,然后重新创建bigframe表

我觉得我的工作效率很低

我需要如何使这更有效的建议,我不知道从哪里开始

我以前从未使用过SQL或任何类型的数据库。有人告诉我,这是一种更有效的存储/操作/更新数据的方法

我想知道我是否做了之前在我描述的示例中所做的一切

是否可以创建一个数据库,将dataframes/csv表保存为SQL表中的列

有没有一种方法可以将csv数据作为新列直接添加到SQL表中,而无需将其保存到我的计算机

我还担心不同的服务器同时访问数据库和更新值,当两个不同的“用户”更新同一个表(但不同的列,而不是同一列)时会不会发生冲突


如果该列存在,有没有办法轻松更新该列?

一下子就有很多问题。我将尝试提供一些答案

  • 是的,您可以直接从CSV移动到数据库。您需要在
    psql
    客户端中输入或
    \copy
    从客户端用户的角度工作,而
    copy
    从服务器用户的角度工作。虽然由于您使用的是Python,并且可能是“psycopg2
    ,所以您可以访问[COPY](https://www.psycopg.org/docs/usage.html#copy)在Python客户端中。无论哪种情况,您都需要提前为数据创建表。这导致了2)

  • 我将
    创建表
    一些用于每日数据转储的保留表。您可以执行
    截断
    表,然后
    将整个新集合复制到表中<代码>复制
    非常快。需要注意的是,如果出现错误,整个
    副本将回滚

  • 创建表格
    数据的最终表格。然后,您可以使用连接来使用保留表中的信息在最终表上插入、更新、删除


  • 我更新了我的问题,我忘了问,如果多个服务器试图访问数据库,会不会发生冲突?假设一台服务器正在添加列Data200952,另一台服务器正在更新列Data3,是否不允许一台服务器访问数据库?或者会有一些排序的队列吗?我可以创建一个空表开始,然后慢慢添加列,等等,你是说我必须为每个数据列创建一个单独的表,还是说在它进入大表之前只是一个临时表?不确定是哪个服务器(s0)您正在谈论的?数据库将只是一台服务器。您将创建的表取决于数据的性质。如果有一列(如日期)将不同的数据集联系在一起,那么您可以拥有一个表。您可以看看这个问题吗?