#postgresql
#postgresql
Вопрос:
Я новичок в postgresql и sql в целом. Из того, что я понял, вручную можно было бы создать таблицу для каждого файла, а затем использовать copy для импорта данных из файла csv в таблицу. Если у нас есть несколько файлов csv, можно ли импортировать и создавать таблицы для всех файлов, используя имена заголовков в файле csv в качестве имен столбцов?
Спасибо
Комментарии:
1. Не напрямую с помощью команд Postgres. Хотя есть это: csvsql
2. Было бы полезно включить в ваш вопрос информацию о размере файлов данных и о том, какие языки программирования вы используете.
3. @AdrianKlaver Я изучаю это вместе с django и python. Размер базы данных составляет 594 МБ. Следуя вашему примеру ниже, должен ли я записывать таблицу CREATE TABLE (…) для каждого файла csv?
4. Вторая часть примера показывает, как таблица создается и заполняется данными за один шаг. Размер файла, который меня интересовал, был размером файлов CSV.
Ответ №1:
В качестве примера с использованием программы, которую я упомянул в комментарии:
--Shows table schema creation using Postgres dialect
csvsql -i postgresql --tables cp ~/cell_per.csv
CREATE TABLE cp (
line_id DECIMAL NOT NULL,
category VARCHAR NOT NULL,
cell_per DECIMAL NOT NULL,
ts_insert TIMESTAMP WITHOUT TIME ZONE,
ts_update TIMESTAMP WITHOUT TIME ZONE,
user_insert VARCHAR,
user_update VARCHAR,
plant_type VARCHAR,
season VARCHAR,
short_category VARCHAR
);
--Create table and import from file in one step
csvsql --db postgresql://aklaver:@localhost:5432/test --tables cp --insert ~/cell_per.csv
d cp
Table "public.cp"
Column | Type | Collation | Nullable | Default
---------------- ----------------------------- ----------- ---------- ---------
line_id | numeric | | not null |
category | character varying | | not null |
cell_per | numeric | | not null |
ts_insert | timestamp without time zone | | |
ts_update | timestamp without time zone | | |
user_insert | character varying | | |
user_update | character varying | | |
plant_type | character varying | | |
season | character varying | | |
short_category | character varying | | |
select count(*) from cp;
count
-------
68
(1 row)
Это всего лишь один инструмент. Вы также можете использовать инструменты ввода-вывода от Pandas.