我正在尝试自动将模式和一些表创建到新创建的模式中。我试图在powershell中编写一个脚本来帮助我实现同样的目标。我已经能够创建模式,但是,我无法将表创建到该模式中。
我正在将新模式作为变量创建到powershell。
到目前为止脚本(基于以下答案的解决方案。StackOverFlow Solution):
$MySchema=$args[0]
$CreateSchema = 'CREATE SCHEMA \"'+$MySchema+'\"; set schema '''+$MySchema+''';'
write-host $CreateSchema
C:\PostgreSQL\9.3\bin\psql.exe -h $DBSERVER -U $DBUSER -d $DBName -w -c $CreateSchema
# To create tables
C:\PostgreSQL\9.3\bin\psql.exe -h $DBSERVER -U $DBUSER -d $DBName -w -f 'E:\automation\scripts\create-tables.sql' -v schema=$MySchema
执行时,我看到以下错误:
psql:E:/automation/scripts/create-tables.sql:11: ERROR: no schema has been selected to create in
create-tables.sql的内容是:
SET search_path TO :schema;
CREATE TABLE testing (
id SERIAL,
QueryDate varchar(255) NULL
);
答案 0 :(得分:1)
你的第一步就是这个:
$CreateSchema = 'CREATE SCHEMA \"'+$MySchema+'\"; set schema '''+$MySchema+''';'
取出set schema
- 它是错误的并导致不创建架构。然后在下一步中,您将找到一个空的搜索路径(因为架构永远不会被创建),这就是您收到该错误的原因。