Нужно ли мне создавать таблицу для каждого файла и потом присоединяться к ним?
Да, настройте таблицу для каждого файла и поместите файл в каждое место таблицы.
Некоторые таблицы можно комбинировать. Например, если у вас есть col2, col2, col3
в одном файле CSV и col1, col2, col3, col4, col5
во втором файле CSV (общие столбцы находятся в тех же позициях, а дополнительные столбцы в конце), вы можете создать одну таблицу с надмножеством столбцов, столбцы, отсутствующие в первом файле, будут выбрано как NULL, а не как NULL из второго файла, поместите оба файла в одну и ту же папку.
Также вы можете объединить разные файлы (одинаковые столбцы, расположенные по-разному) в одном месте таблицы (таблица должна иметь столько же строковых столбцов, сколько в самом широком файле), затем в выборе вы можете использовать псевдостолбец INPUT__FILE__NAME, проанализировать имя файла и вычислить столбцы в зависимости от это, например, примерно так:
select
case when INPUT__FILE__NAME rlike 'invoice\\.csv' then col1
when INPUT__FILE__NAME rlike 'transaction\\.csv' then col3
else NULL
end as invoice_nbr
После того, как вы создали все таблицы, вы можете объединить их или объединить UNION ALL + в зависимости от требований.
В этом случае гораздо лучшим решением будет использовать JSON вместо CSV:
- JSON содержит имена, положение не имеет значения
- JSON допускает отсутствие атрибутов
- Если какой-либо атрибут отсутствует в записи JSON, в качестве значения столбца для этой записи возвращается NULL.
- вы можете поместить файлы JSON с разным содержанием в одно и то же место и создать таблицу с надмножеством столбцов, см., как создать таблицу ответ 1, ответ 2 и ответ 3
person
leftjoin
schedule
28.07.2021