如何在postgresql中自动导入多个csv文件并从其标题创建表?

如何在postgresql中自动导入多个csv文件并从其标题创建表?,postgresql,Postgresql,我不熟悉postgresql和sql。据我所知,手动为每个文件创建表,然后使用copy将数据从csv文件导入表中。如果我们有一堆csv文件,是否可以使用csv文件中的标题名作为列名导入和创建所有文件的表 感谢您以我在评论中提到的程序为例: --Shows table schema creation using Postgres dialect csvsql -i postgresql --tables cp ~/cell_per.csv CREATE TABLE cp (

我不熟悉postgresql和sql。据我所知,手动为每个文件创建表,然后使用copy将数据从csv文件导入表中。如果我们有一堆csv文件,是否可以使用csv文件中的标题名作为列名导入和创建所有文件的表


感谢您以我在评论中提到的程序为例:

--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)


这只是一个工具。您也可以使用。

中的I/O工具,而不直接使用Postgres命令。不过也有这样一个问题:在你的问题中加入关于数据文件大小和你使用的编程语言的信息会有所帮助。@AdrianKlaver我也在学习django so python。db的大小为594 mbs。按照下面的示例,我是否必须为每个csv文件写下创建表格(…)?示例的第二部分显示如何在一个步骤中创建表格并填充数据。我感兴趣的文件大小是CSV文件的大小。