【发布时间】:2020-02-13 22:02:57
【问题描述】:
我正在使用托管在 AWS S3 存储桶中的大量 CSV,它们具有许多不同的架构(例如,一个 CSV 可能有标题 ['Name'、'Height'、'Weight'],一个可能有标题 ['姓名”、“出生日期”、“性别”])。
我有一个 AWS RDS Aurora MySQL 无服务器数据库实例,上面有一个包含架构的数据库表(例如,使用上面的示例,它的架构可能是 ['Name', 'Height', 'Weight', 'DOB' , '性'])。
我编写了一个 AWS Lambda Python 函数,该函数连接到数据库,将相关表的架构作为列表获取,从 S3 连接到给定的 CSV,将其标题作为列表获取,然后比较它们,抛出异常如果 CSV 标头不是数据库模式的子集。我现在正在尝试为 CSV 标头是数据库模式的子集的情况编写代码,在这种情况下,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()
...
【问题讨论】:
标签: python mysql amazon-web-services csv database-design