Як імпортувати наявні * .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 (пара паролів користувача зберігається в PostgreSQL).
Боло

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

@Bolo: Ви б поставили три відповіді у відповідь?
AH

@Bolo, Як ви вже згадували, зараз я перебуваю на третьому кроці. але як я можу імпортувати .sql файл з моєї локальної машини. Я спробував \ i [повний шлях з розширенням], але я отримую повідомлення про помилку .sql немає такого файлу чи каталогу. Скажіть, будь ласка, приклад.

75

у командному рядку спочатку дістаньтесь до каталогу, де присутній psql, а потім запишіть такі команди:

psql [database name] [username]

а потім натисніть клавішу enter psql з проханням ввести пароль:

тоді пиши

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

потім натисніть клавішу Enter.


Я також цим користуюся. І це працює. Але я змінюю надані оператори SQL. Раніше існуючий * .sql не використовував жодного символу; як припинення рядка. І я також повинен зняти GO. Ви не натякаєте, що скрипт sql не є скриптом psql?
swdev

Я намагався використовувати \ i [повний шлях з розширенням], але я отримую повідомлення про помилку .sql немає такого файлу чи каталогу. Скажіть приклад. Дякую.

Якщо \ я каже, що такого файлу немає, то він не знайшов файл у цій позиції. Найкраще вказати абсолютну URL-адресу. Для мене в Windows цей командний рядок працював: \ i /tmp/robert/test.sql Звичайно, у цьому файлі повинні бути дійсні команди SQL.
shevy

36

Ну, найкоротший шлях, про який я знаю, це:

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

ім'я бази даних: у яку базу даних слід вставити свої файлові дані.

file_path: абсолютний шлях до файлу, через який потрібно виконати імпорт.

ім'я хоста : ім'я хоста. В цілях розвитку, це в основному localhost.

Після введення цієї команди в консоль вам буде запропоновано ввести свій пароль.


25

Будьте обережні з "/" та "\". Навіть у Windows команда повинна бути у формі:

\i c:/1.sql

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.