Как импортировать существующие файлы * .sql в PostgreSQL 8.4?


105

Я использую PostgreSQL 8.4, и у меня есть файлы * .sql для импорта в базу данных. Как я могу это сделать?

Ответы:


142

Из командной строки:

psql -f 1.sql
psql -f 2.sql

Из psqlподсказки:

\i 1.sql
\i 2.sql

Обратите внимание, что вам может потребоваться импортировать файлы в определенном порядке (например: определение данных перед обработкой данных). Если у вас есть bashоболочка (GNU / Linux, Mac OS X, Cygwin) и файлы можно импортировать в алфавитном порядке , вы можете использовать эту команду:

for f in *.sql ; do psql -f $f ; done

Вот документация psqlприложения (спасибо, Фрэнк): http://www.postgresql.org/docs/current/static/app-psql.html


@moon Может быть, у вас нет прав доступа к файлам SQL? Какая у вас операционная система?
Боло

@moon Это пароль, связанный с вашим пользователем PostgreSQL (пара user-pass хранится в PostgreSQL).
Bolo

8
@moon Я предлагаю вам разделить вашу проблему на три этапа: 1) убедитесь, что вы можете начать psqlработу. 2) убедитесь , что пользователь имеет необходимые права записи, такие как: CREATE, INSERT, UPDATEи т.д. 3) импортировать файлы SQL. Насколько я понимаю, вы сейчас на первом этапе.
Bolo

@Bolo: Не могли бы вы включить в ответ три этапа?
AH

@Bolo, как вы упомянули, я сейчас на третьем этапе. но как я могу импортировать файл .sql с моего локального компьютера. Я попробовал \ i [полный путь с расширением], но получаю сообщение об ошибке .sql нет такого файла или каталога. Не могли бы вы привести пример.

75

в командной строке сначала перейдите в каталог, где находится psql, затем напишите такие команды:

psql [database name] [username]

а затем нажмите ввод. psql запрашивает пароль, введите пароль пользователя:

затем написать

> \i [full path and file name with extension]

затем нажмите ввод, вставка завершена.


Я тоже этим пользуюсь. И это работает. Но я изменяю предоставленные операторы SQL. Ранее существующий * .sql не использовал никаких символов; как окончание строки. И еще я должен удалить GO. Вы думаете, что сценарий sql не является сценарием psql?
swdev

Я попытался использовать \ i [полный путь с расширением], но получаю сообщение об ошибке .sql нет такого файла или каталога. Не могли бы вы загрузить пример. Спасибо.

Если \ i сообщает, что такого файла нет, значит, он не нашел файл в этой позиции. Лучше всего указывать абсолютный URL. Для меня в Windows эта командная строка работала: \ i /tmp/robert/test.sql, конечно, в этом файле должны быть допустимые команды SQL.
shevy 06

36

Ну, самый короткий путь, который я знаю, следующий:

psql -U {user_name} -d {database_name} -f {file_path} -h {host_name}

database_name: в какую базу данных следует вставить данные файла.

file_path: Абсолютный путь к файлу, через который вы хотите выполнить импорт.

host_name: имя хоста. Для целей разработки это в основном localhost.

После ввода этой команды в консоли вам будет предложено ввести пароль.


25

Будьте осторожны с «/» и «\». Даже в Windows команда должна иметь следующий вид:

\i c:/1.sql

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.