2015-10-14 2 views
2

В основном я хочу выполнить файл SQL из файла SQL в Postgres.Можно ссылаться на другой файл SQL из сценария SQL

Похожий вопрос для MySQL: is it possible to call a sql script from a stored procedure in another sql script?

Почему?

Поскольку у меня есть 2 файла данных в проекте, и я хочу иметь одну строку, которую можно прокомментировать/не комментировать, загружая второй файл.

Разъяснение: Я хочу назвать B.SQL из A.SQL

Clarification2: Это для Spring проекта, который использует спящий режим, чтобы создать базу данных из исходного файла SQL (А. SQL).

При дальнейшем отражении кажется, что мне, возможно, придется обращаться с этим из java/string/hibernate.

Ниже файл конфигурации:

spring.datasource.url=jdbc:postgresql://localhost:5432/dbname 
spring.datasource.username=postgres 
spring.datasource.password=root 
spring.datasource.driver-class-name=org.postgresql.Driver 

spring.datasource.data=classpath:db/migration/postgres/data.sql 
spring.jpa.hibernate.ddl-auto=create 
+0

Как вы хотите, чтобы выполнить файл SQL? с psql? –

+0

@Tommaso Di Bucchianico Я хочу вызвать один файл sql из другого файла. –

ответ

1

Hibernate просто:

  1. чтение всех файлов SQL строки в каждой строке
  2. полосы любой комментарий (строки, начинающиеся с --, // или /*)
  3. удаляет ; в конце
  4. выполняет результат в виде одного заявления

(см. SchemaExport.importScript и SingleLineSqlCommandExtractor)

Здесь нет поддержки для включения.

Что вы можете сделать:

  • определить свой собственный ImportSqlCommandExtractor, который знает, как включить файл - вы можете установить, что экстрактор hibernate.hbm2ddl.import_files_sql_extractor=(fully qualified class name)
  • Определите дополнительный файл в качестве дополнительного файла импорта с hibernate.hbm2ddl.import_files=prefix.sql,optional.sql,postfix.sql, вы можете либо добавьте и удалите ссылку на файл, как вам нравится, либо вы даже можете исключить файл из своего артефакта - отсутствующий файл создаст сообщение отладки.
  • Создание Integrator, который устанавливает hibernate.hbm2ddl.import_files свойства динамически - в зависимости от некоторого свойства среды
2

Импорт других файлов не поддерживается в Sql, но если выполнить скрипт с psql вы можете использовать \i синтаксис:

SELECT * FROM table_1; 
\i other_script.sql 
SELECT * FROM table_2; 

Это, вероятно, не сработает, если вы выполните sql с другими клиентами, чем psql.

+0

Я пробовал, что ... он работает только через консоль. +1 хотя ... –

+0

Да, вы все еще не говорите, как вы хотите выполнить скрипт. –

+0

Он запускается через спящий режим в проекте Java Spring. Ваше право, я этого не делал. Я думаю, что, возможно, мне нужно справиться с этим в спящем/java. –

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