Sử dụng lệnh cơ sở dữ liệu cơ sở dữ liệu trong PostgreSQL


366

Tôi mới bắt đầu sử dụng PostgreSQL.

Tôi muốn kết nối với cơ sở dữ liệu khác từ trình soạn thảo truy vấn của Postgres - như USElệnh của MySQL hoặc MS SQL Server.

Tôi tìm thấy \c databasenamebằng cách tìm kiếm trên Internet, nhưng nó chỉ chạy trên psql . Khi tôi thử nó từ trình soạn thảo truy vấn PostgreQuery, tôi gặp lỗi cú pháp.

Tôi phải thay đổi cơ sở dữ liệu bằng cách viết. Có ai biết làm thế nào để làm điều đó?



Một tùy chọn khác là kết nối trực tiếp với lược đồ. Ví dụ : sudo -u postgres psql -d my_database_name. Nguồn
AlikElzin-kilaka

Câu trả lời:


381

Khi bạn nhận được một kết nối đến PostgreSQLnó luôn luôn là một cơ sở dữ liệu cụ thể. Để truy cập cơ sở dữ liệu khác, bạn phải có kết nối mới.

Sử dụng \ctrong psql sẽ đóng kết nối cũ và có được một kết nối mới, sử dụng cơ sở dữ liệu và / hoặc thông tin xác định. Bạn nhận được một quá trình back-end hoàn toàn mới và tất cả mọi thứ.


Cảm ơn kgrittn về hướng dẫn có giá trị của bạn. Bạn có thể cho tôi biết làm thế nào tôi có thể tạo kết nối mới với cơ sở dữ liệu và đóng trước đó bằng cách sử dụng truy vấn psscript không?
sam

Tôi không quen thuộc với psscript. Nếu đó là ngôn ngữ mà bạn viết các hàm, câu trả lời là nó không thể được thực hiện. Có lẽ bạn nên xem xét việc đặt các bảng trong các lược đồ khác nhau thay vì các cơ sở dữ liệu khác nhau ?
kgrittn

2
Một truy vấn không thể thay đổi cơ sở dữ liệu trong PostgreSQL.
kgrittn

Cảm ơn kgrittn vì tất cả sự giúp đỡ của bạn .. :)
sam

8
Nếu tôi không nhầm, cơ sở dữ liệu trong MySQL gần giống với các lược đồ trong PostgreSQL - bạn có thể chuyển đổi giữa các cơ sở đó, nhưng DB trong PostgreQuery là một trò chơi hoàn toàn khác.
mở

213

Bạn phải chỉ định cơ sở dữ liệu để sử dụng trên kết nối; nếu bạn muốn sử dụng psql cho tập lệnh của mình, bạn có thể sử dụng "\ c name_database"

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

Tại thời điểm này, bạn có thể thấy đầu ra sau đây

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

Lưu ý cách nhắc nhở thay đổi. Chúc mừng, tôi cũng đang hối hả tìm kiếm điều này, quá ít thông tin về postgreSQL so với MySQL và phần còn lại theo quan điểm của tôi.



9

Vấn đề cơ bản trong khi di chuyển từ MySQL mà tôi gặp phải là, tôi đã nghĩ về thuật ngữ này databasegiống với PostgreQuery, nhưng thực tế không phải vậy. Vì vậy, nếu chúng ta sẽ chuyển cơ sở dữ liệu từ ứng dụng của mình hoặc pgAdmin, kết quả sẽ không như mong đợi. Như trong trường hợp của tôi, chúng tôi có các lược đồ riêng (Xem xét thuật ngữ PostgreSQL ở đây.) Cho mỗi khách hàng và lược đồ quản trị riêng. Vì vậy, trong ứng dụng, tôi phải chuyển đổi giữa các lược đồ.

Đối với điều này, chúng ta có thể sử dụng SET search_pathlệnh. Điều này không chuyển đổi lược đồ hiện tại sang tên lược đồ đã chỉ định cho phiên hiện tại.

thí dụ:

SET search_path = different_schema_name;

Điều này thay đổi current_schema thành lược đồ đã chỉ định cho phiên. Để thay đổi nó vĩnh viễn, chúng ta phải thay đổi trong postgresql.conftập tin.


4

Sử dụng dấu phẩy này khi lần đầu tiên kết nối với psql

=# psql <databaseName> <usernamePostgresql>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.