使用存储在文件中的(postgres)sql select语句创建具有bash文件的表

create tables with a bash file from (Postgres) sql select statement stored in files

给定一组复杂的、连续的(postgres)SQL select语句,每个语句都存储在一个SQL文件中,如何编写bash脚本dropping(如果存在),并创建一个表,其中每个语句的结果与文件名具有相同的表名。

背景:我们在git repo中共享这些SQL文件,不同的用户希望以不同的方式使用这些语句。我想自动创建表,其他人使用临时表,因此我不想在SQL文件的头中写"创建表…"。


你的壳牌脚本的一个脚本可以这样看待:

1
2
3
4
5
6
7
8
9
10
SET -e  # stop immediately ON any error
FOR script IN s1 s2 s3
do
  echo"processing $script"
  SELECT=`cat $script`
  psql -d dbname -U USER <<EOF
DROP TABLE IF EXISTS"$script";
CREATE TABLE"$script" AS $select ;
EOF
done

注:尽管任何选择都不需要作为CREATE TABLE .. AS SELECT...的来源

作为一个简单的例子,考虑两个不同的柱共享相同的名称时的个案。这是一个法律选择,但在从它创建一个桌子的时候,一个错误的条件。