说我有文件:
file1.sql
file2.sql
file3.sql
Run Code Online (Sandbox Code Playgroud)
我需要在一个事务中执行所有三个文件.我正在寻找一个bash脚本,如:
psql -h hostname -U username dbname -c "
begin;
\i file1.sql
\i file2.sql
\i file3.sql
commit;"
Run Code Online (Sandbox Code Playgroud)
这失败了,出现了错误:Syntax error at or near "\"
.
我还尝试先连接到数据库,然后执行失败,如下所示:
psql dbname
begin;
\i file1.sql
\i file2.sql
\i file3.sql
commit;
Run Code Online (Sandbox Code Playgroud)
这也失败了,因为'begin'命令仅在连接终止时执行.
是否可以使用PostgreSQL和bash在单个事务中执行多个.sql文件?
编辑:
每个文件的粗略结构类似:
SET CLIENT_ENCODING TO 'WIN1251';
\i file4.sql
\i file5.sql
<etc>
RESET CLIENT_ENCODING;
Run Code Online (Sandbox Code Playgroud)