คำสั่ง“ ใช้ database_name” ใน 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 หากเป็นภาษาที่คุณเขียนฟังก์ชั่นคำตอบก็คือไม่สามารถทำได้ บางทีคุณควรพิจารณาวางตารางในschema ที่แตกต่างกันแทนที่จะเป็นฐานข้อมูลที่แตกต่างกันหรือไม่
kgrittn

2
แบบสอบถามไม่สามารถเปลี่ยนฐานข้อมูลใน PostgreSQL
kgrittn

ขอบคุณ kgrittn สำหรับความช่วยเหลือทั้งหมดของคุณ .. :)
sam

8
ถ้าฉันไม่เข้าใจผิดฐานข้อมูลใน MySQL นั้นคล้ายกับ schemas ใน PostgreSQL มากกว่าคุณสามารถสลับระหว่างสิ่งเหล่านั้นได้ แต่ DBs ใน PostgreSQL นั้นเป็น ballgame ที่แตกต่างกันโดยสิ้นเชิง
mpen

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ผลลัพธ์จะไม่เป็นไปตามที่คาดไว้ เช่นเดียวกับในกรณีของฉันเรามี schema แยก (พิจารณาคำศัพท์ PostgreSQL ที่นี่) สำหรับลูกค้าแต่ละรายและ schema ผู้ดูแลระบบแยกต่างหาก ดังนั้นในแอปพลิเคชันฉันต้องสลับระหว่างสกีมา

สำหรับสิ่งนี้เราสามารถใช้SET search_pathคำสั่ง สิ่งนี้จะเปลี่ยนสคีมาปัจจุบันเป็นชื่อสคีมาที่ระบุสำหรับเซสชันปัจจุบัน

ตัวอย่าง:

SET search_path = different_schema_name;

สิ่งนี้เปลี่ยน current_schema เป็นสกีมาที่ระบุสำหรับเซสชัน หากต้องการเปลี่ยนแปลงอย่างถาวรเราต้องทำการเปลี่ยนแปลงในpostgresql.confไฟล์


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.