我有一个包含多个csv文件的文件夹,它们都具有相同的列属性.

我的目标是使每个csv文件都成为一个不同的postgresql表,命名为文件名,但由于有超过1k个csv文件,手动操作将是一个相当长的过程.

我一整天都在努力寻找解决方案,但最接近解决问题的是以下代码:

for filename in select pg_ls_dir2 ('/directory_name/') loop
    if (filename ~ '.csv$') THEN create table filename as fn
        copy '/fullpath/' || filename to table fn
    end if;
END loop;

这段代码背后的逻辑是 Select 文件夹中的每个文件名,创建一个名为文件名的表,并将内容导入到所述表中.

问题是,我不知道如何实际将其付诸实践,例如,由于forpg_ls_dir2都不是SQL指令,我应该在哪里执行这段代码?

推荐答案

如果使用DBeaver,软件中最近添加了一个功能,可以解决这个问题.(在Windows上)您必须右键单击模式中的"表"部分(而不是目标表!)然后只需 Select "导入数据",您就可以同时 Select 所有需要的.csv文件,如您所述 for each 文件创建一个新表.

Sql相关问答推荐

IS True操作员

如何查询未命名对象的SON数组

基于模式或其他行集的数据复制

为什么Postgrs Planner会在输出部分中显示我在查询中不使用的列?'""

LAG函数通过丢弃空值返回前一行

Select 起始参数和截止参数之间的间隔,包括与期间重叠的参数

Lag()函数的差异:R与SQL(将R代码转换为SQL)

雅典娜嵌套Json提取液

带日期函数的复合索引不允许只扫描索引吗?

用于SQL协助的XQUERY()

如何在多列上编写具有不同条件的查询?

在Oracle SQL中按月生成日期

插入具有预期逻辑的查询以Forking 表

获取主表条目,其中最新的辅助条目是 6 个月前

错误:postgresql 中缺少表评级的 FROM 子句条目

复制SQL Server临时表

PostgreSQL中如何提取以特定字符开头的字符串中的所有单词?

根据条件列出不同的值

并非所有变量都绑定在 PL SQL 函数中

按 15 分钟递增计数分组,包括 0 计数