gpt4 book ai didi

bash - 在 bash 中动态重命名文件?

转载 作者:行者123 更新时间:2023-11-29 13:03:55 32 4
gpt4 key购买 nike

我正在使用 PostgreSQL 脚本通过 COPY TO 命令创建 CSV 数据文件。每次脚本执行时,我都需要在输出文件上有一个新名称。但是 PostgreSQL 不允许我使用动态文件名。这是一项安全功能。

如果我想 COPY ... TO '\home\yerleth\mydata' ||当前日期|| '.csv',我不能。

我在想也许可以在 bash 中设置某种虚拟文件(比如缓冲区?)这样每当内容发生变化时,bash 都会使用我预定义的参数重命名文件。就像 bash 自动将内容转发到一个新文件中一样。这将允许我在 SQL 脚本中使用静态文件名。bash 中是否存在这个概念?

在伪 bash 中,这是我希望能够做的:

bash > config_virtual_file -virtualname = xyz.csv -newname = 'xyz ' + CURRENT_DATE + '.csv' 
xyz.csv virtual file created
bash > psql

psql > copy (SELECT * from clients) TO xyz.csv
psql > go
psql > \q

bash > ls *.csv
xyz 2013-12-16 13:15:20.csv
bash > ls -virtual_files
xyz.csv

希望这是清楚的。我检查了其他帖子并发现了符号链接(symbolic link)。不幸的是(对于这种特殊情况),符号链接(symbolic link)将输入重定向到其他现有文件或文件夹。我正在寻找一种将传入数据定向到新文件的方法。

最佳答案

您可以使用 bash 创建 PostgreSQL 脚本:

echo "COPY ... TO '$HOME/mydata$(date +%Y%m%d).csv';" > pgsql.script

然后将生成的文件提供给 SQL 命令解释器(pgsql?)。

关于bash - 在 bash 中动态重命名文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20614636/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com