将DML命令从文本文件发送到PostgreSQL

时间:2019-03-25 14:41:01

标签: bash

我有一个包含*.sql个文件的文件夹。每个文件都是多行SQL命令,我需要在PostgreSQL上执行。

这是我的代码:

DATA_DIR=db
SCHEMA=$DATA_DIR/schema

echo ================ Parameters:
echo SCHEMA=$SCHEMA

with_postgresql () {
    sudo docker exec postgresql sudo -u postgres psql -c
}

with_psql () {
    {
        while read LINE; do
            echo "$LINE"
        done
    } | with_postgresql
}


echo ================ Creating tables.
while read LINE; do
    echo Creating table: $LINE
    cat $SCHEMA/TABLE/$LINE.sql
done < $SCHEMA/meta/table_order | with_psql

运行脚本时,我收到消息:

  

=================创建表。   / usr / lib / postgresql / 10 / bin / psql:选项需要一个参数-'c'

with_postgresql()键之后,psql函数似乎没有将文件的内容传递给-c命令。我该怎么办?

0 个答案:

没有答案