kha*_*jlk 4 sql csv postgresql
我的 PostgreSQL 9.5 数据库中有一个表,其中包含两列,即 start_time (没有时区的时间戳)和值(记录),如下所示。
Start_time Values
2003-06-07 00:00:00 12
2004-02-03 00:00:00 16
2005-07-09 00:00:00 14
2003-07-07 00:00:00 17
2004-01-31 00:00:00 11
2005-05-02 00:00:00 10
Run Code Online (Sandbox Code Playgroud)
对于 start_time,我需要导出 my_table 记录,以便它为每个年份切片生成 CSV 文件,如下所示(将每年的记录分隔在单独的 CSV 文件中)。
预期输出:
results_2003.csv
results_2004.csv
results_2005.csv
and so on...
Run Code Online (Sandbox Code Playgroud)
这个怎么做?
在 plpgsql DO 块内以动态执行格式使用复制命令,例如:
do $$
declare
y int;
begin
for y in
select distinct extract(year from start_time)
from my_table
loop
execute format($ex$
copy (
select *
from my_table
where extract(year from start_time) = %1$s
)
to '\data\%1$s.csv'
$ex$, y);
end loop;
end $$;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1122 次 |
| 最近记录: |