gpt4 book ai didi

python - 将 CSV header 与 MySQL 架构列相匹配

转载 作者:行者123 更新时间:2023-11-29 15:34:10 25 4
gpt4 key购买 nike

我正在使用 AWS S3 存储桶中托管的大量 CSV,这些 CSV 具有许多不同的模式(例如,一个 CSV 可能具有标题 ['Name', 'Height', 'Weight'],而一个 CSV 可能具有标题 ['姓名'、'出生日期'、'性别'])。

我有一个 AWS RDS Aurora MySQL Serverless 数据库实例,其上有一个具有包含架构的数据库表(例如,使用上面的示例,其架构可能是 ['Name', 'Height', 'Weight', 'DOB' ,“性”])。

我编写了一个 AWS Lambda Python 函数,该函数连接到数据库,以列表形式获取相关表的架构,从 S3 连接到给定的 CSV,以列表形式获取其 header ,并对它们进行比较,引发异常如果 CSV header 不是数据库架构的子集。我现在正在尝试为 CSV header 是数据库架构的子集的情况编写代码,在这种情况下,可以将 CSV 安全地加载到数据库中。

是否有一个工具可以加载 CSV,使其标题自动与数据库中的相应列相匹配并相应地填充行?例如(虽然这似乎是一个不必要的资源消耗解决方法),如果我将 CSV 加载到 pandas DataFrame 中,然后尝试将其加载到数据库中,列名称会自动匹配吗?如果是这样,下面的代码会是什么样子?

...
if not set(cols).issubset(schema):
raise Exception('CSV columns are not subset of schema (see above). Please reconfigure schema or column names and retry.')
else:
with conn.cursor() as cur:
* CODE TO LOAD CSV TO DB WITH AUTOMATIC COLUMN-TO-SCHEMA MATCHING *
conn.commit()
...

最佳答案

您希望名称匹配吗?当它们匹配时,您希望每个 csv 中的一行在表中总共只创建一行吗?

那就更好了

  1. 将数据从一个 csv 加载到一个表中(在执行 CREATE TABLE 并在 LOAD DATA 上拼写出合适的参数之后)
  2. 将数据从另一个 csv 加载到另一个表中(...同上...)
  3. INSERT INTO 最终表是这两个表的 JOIN。 (插入..(...)选择...加入...)

如果任一行中可能缺少行(对于名称),那么您需要FULL OUTER JOIN。 MySQL没有这样的,但是可以模拟。或者第 3 步可以通过多个步骤完成。

关于python - 将 CSV header 与 MySQL 架构列相匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58424896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com