Команда «використовувати базу даних» у PostgreSQL


366

Я початківець в PostgreSQL.

Я хочу підключитися до іншої бази даних з редактора запитів Postgres - на зразок USEкоманди MySQL або MS SQL Server.

Я знайшов \c databasenameпошук в Інтернеті, але він працює лише на psql . Коли я спробую це з редактора запитів PostgreSQL, я отримую синтаксичну помилку.

Я маю змінити базу даних за допомогою pgscripting. Хтось знає, як це зробити?



Ще один варіант - безпосередньо підключитися до схеми. Приклад: sudo -u postgres psql -d my_database_name. Джерело
AlikElzin-kilaka

Відповіді:


381

Коли ви підключаєтесь до PostgreSQLнього, це завжди до певної бази даних. Щоб отримати доступ до іншої бази даних, потрібно встановити нове з'єднання.

Використання \cв psql закриває старе з'єднання та набуває нового, використовуючи вказану базу даних та / або облікові дані. Ви отримуєте цілком новий зворотний процес і все.


Дякую kgrittn за ваші цінні вказівки. Чи можете ви сказати мені, як я можу встановити нове підключення до бази даних та закрити попереднє за допомогою запиту pgscript?
сам

Я не знайомий з pgscript. Якщо це мова, якою ви пишете функції, відповідь полягає в тому, що це зробити не можна. Можливо, вам слід розглянути можливість розміщення таблиць у різних схемах замість різних баз даних ?
kgrittn

2
Запит не може змінити базу даних у PostgreSQL.
kgrittn

Дякую kgrittn за всю вашу допомогу .. :)
сам

8
Якщо я не помиляюся, бази даних в MySQL більше схожі на схеми в PostgreSQL - ви можете перемикатися між ними, але БД в PostgreSQL - це зовсім інша кульова гра.
1212

213

Ви повинні вказати базу даних, яка буде використовуватись при підключенні; якщо ви хочете використовувати psql для свого сценарію, ви можете використовувати "\ c name_database"

user_name=# CREATE DATABASE testdatabase; 
user_name=# \c testdatabase 

У цей момент ви можете побачити наступний вихід

You are now connected to database "testdatabase" as user "user_name".
testdatabase=#

Зауважте, як змінюється підказка. Ура, щойно поспішали шукати цього, занадто мало інформації про postgreSQL порівняно з MySQL та рештою, на мій погляд.



9

Основна проблема під час міграції з MySQL, з якою я стикався, - я думав, що термін databaseтакож є однаковим у PostgreSQL, але це не так. Отже, якщо ми збираємось переключити базу даних із нашого додатку pgAdmin, результат не буде таким, як очікувалося. Як і в моєму випадку, у нас є окремі схеми (з урахуванням термінології PostgreSQL тут.) Для кожного клієнта та окрема схема адміністрування. Тож у застосуванні мені доводиться перемикатися між схемами.

Для цього ми можемо використовувати SET search_pathкоманду. Це перемикає поточну схему на вказане ім'я схеми для поточного сеансу.

приклад:

SET search_path = different_schema_name;

Це змінює current_schema на вказану схему сеансу. Щоб його постійно змінити, нам доведеться внести зміни у postgresql.confфайл.


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