Я работаю с множеством CSV, размещенных в корзине AWS S3, со многими различными схемами (например, один CSV может иметь заголовки ['Name', 'Height', 'Weight'], а другой может иметь заголовки ['Имя ',' DOB ',' Sex ']).
У меня есть экземпляр базы данных AWS RDS Aurora MySQL Server, на нем таблица базы данных с охватывающей схемой (например, при использовании приведенного выше примера ее схема может быть['Имя', 'Рост', 'Вес', 'DOB', 'Пол']).
Я написал функцию Python AWS Lambda, которая подключается к базе данных, получает схему соответствующей таблицы в виде списка, подключается к данному CSV из S3, получает заголовки в виде списка и сравнивает их,выдает исключение, если заголовки CSV не являются подмножеством схемы базы данных. Сейчас я пытаюсь написать код для случая, когда заголовки CSV являются подмножеством схемы базы данных, и в этом случае CSV можно безопасно загрузить в базу данных.
Существует ли инструмент для загрузки CSVтак, что его заголовки будут автоматически сопоставлены с соответствующими столбцами в базе данных и строки заполнены соответственно? Например (хотя это выглядит как излишне ресурсоемкий обходной путь), если бы я должен был загрузить CSV в DataFrame pandas, а затем попытаться загрузить его в базу данных, будут ли имена столбцов автоматически совпадать? Если это так, как это будет выглядеть в приведенном ниже коде?
...
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()
...