2014-01-15 2 views
0

Я пытаюсь автоматизировать создание схем и некоторых таблиц в этой вновь созданной схеме. Я пытаюсь написать сценарий в powershell, чтобы помочь мне достичь того же. Мне удалось создать схему, однако я не могу создать таблицы в этой схеме.PostgreSQL - автоматизация создания схемы и таблицы - 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 is:

SET search_path TO :schema; 

CREATE TABLE testing (
    id SERIAL, 
    QueryDate varchar(255) NULL 
); 

ответ

1

Вы получили это ваш первый шаг:

$CreateSchema = 'CREATE SCHEMA \"'+$MySchema+'\"; set schema '''+$MySchema+''';' 

Вынимают, что set schema - это ошибочная и вызывая схему, чтобы не быть создан. Затем на следующем шаге вы заканчиваете пустой путь поиска (потому что схема никогда не создавалась), поэтому вы получаете эту ошибку.

+0

Я удалил код 'set schema'. Тем не менее, та же ошибка сохраняется. 'psql: E: /automation/scripts/create-tables.sql: 11: ОШИБКА: никакая схема не была выбрана для создания в' – DataRiver

+0

Что-нибудь еще, что я могу сделать, чтобы заставить это работать? Для меня это кажется тривиальной вещью, но я не могу найти быстрого решения, любая помощь приветствуется. – DataRiver

+0

Думаю, вам нужно пройти шаг за шагом. Сначала закомментируйте второй вызов psql, запустите свой скрипт и затем вручную проверьте, существует ли схема. Если это так, закомментируйте первый вызов psql, запустите свой скрипт и проверьте, существует ли таблица тестирования в схеме. Вы также можете просмотреть файлы журнала базы данных и, возможно, установить в файле конфигурации «log_statement = all», чтобы увидеть все, что действительно запускается. – yieldsfalsehood

Смежные вопросы