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 |
注:尽管任何选择都不需要作为
作为一个简单的例子,考虑两个不同的柱共享相同的名称时的个案。这是一个法律选择,但在从它创建一个桌子的时候,一个错误的条件。