[英]Run PostgreSQL queries from the command line
我將數據插入到表中......我現在想查看包含行、列和數據的整個表。 我如何通過命令顯示它?
psql -U username -d mydatabase -c 'SELECT * FROM mytable'
如果您是 postgresql 新手並且不熟悉使用命令行工具psql
,那么當您進入交互式會話時,您應該注意一些令人困惑的行為。
例如,啟動一個交互式會話:
psql -U username mydatabase
mydatabase=#
此時您可以直接輸入查詢,但您必須記住用分號終止查詢;
例如:
mydatabase=# SELECT * FROM mytable;
如果您忘記了分號,那么當您按下回車鍵時,您的返回行將一無所獲,因為psql
將假定您尚未完成輸入查詢。 這會導致各種混亂。 例如,如果您重新輸入相同的查詢,您很可能會產生語法錯誤。
作為一個實驗,嘗試在 psql 提示符下輸入任何你想要的亂碼,然后按回車鍵。 psql
將默默地為您提供一個新行。 如果您在該新行上輸入一個分號,然后按 Enter,那么您將收到錯誤:
mydatabase=# asdfs
mydatabase=# ;
ERROR: syntax error at or near "asdfs"
LINE 1: asdfs
^
經驗法則是:如果您沒有收到來自psql
的響應,但您至少期待某事,那么您忘記了分號;
SELECT * FROM my_table;
其中my_table
是您的表的名稱。
編輯:
psql -c "SELECT * FROM my_table"
或者只是psql
然后鍵入您的查詢。
如果您的數據庫受密碼保護,那么解決方案是:
PGPASSWORD=password psql -U username -d dbname -c "select * from my_table"
從您的應用程序 (Mac) 打開“SQL Shell (psql)”。
點擊進入默認設置。 出現提示時輸入密碼。
*) 鍵入\?
求助
*) 鍵入\conninfo
以查看您連接的用戶。
*) 鍵入\l
以查看數據庫列表。
*) 通過\c <Name of DB>
連接到數據庫,例如\c GeneDB1
*) 現在你在一個給定的數據庫中,你想知道那個數據庫的模式。 執行此操作的最佳命令是\dn
。
其他也可以工作(但效果不佳)的命令是select schema_name from information_schema.schemata;
並select nspname from pg_catalog.pg_namespace;
:
-) 現在您已經有了 Schemas,您想知道這些 Schemas 中的表。 為此,您可以使用dt
命令。 例如\dt "GeneSchema1".*
*) 現在您可以進行查詢了。 例如:
*) 以下是上述 DB、Schema 和 Tables 在 pgAdmin 中的樣子:
我還注意到查詢
選擇 * FROM 表名;
在 psql 命令提示符上給出錯誤,並且
選擇 * 從“表名”;
運行良好,真的很奇怪,所以不要忘記雙引號。 我一直喜歡數據庫:-(
我對@Grant 的回答毫不懷疑。 但是我有時會遇到一些問題,例如列名是否類似於 postgresql 的任何保留關鍵字,例如natural在這種情況下,很難從命令行運行類似的 SQL,因為在 Query 字段中將需要“\natural\”。 所以我的方法是在單獨的文件中編寫 SQL 並從命令行運行 SQL 文件。 這也有另一個優勢。 如果您必須更改大型腳本的查詢,則無需觸及腳本文件或命令。 只更改這樣的 SQL 文件
psql -h localhost -d database -U postgres -p 5432 -a -q -f /path/to/the/file.sql
下面為 postgres 的 psql 命令提示符編寫相同的查詢。
D:\TOOLS\Postgresql-9.4.1-3\bin>psql -U postgres -d DatabaseName -h localhost -t -c "Select u.\"UserName\" from users u Where u.\"UserId\"= 1個;
我將在 Windows 機器上添加我對一個命令的經驗。 我想嘗試運行單個命令,從中獲取表格內容。
這是對我有用的單個命令:
psql -U postgres -d typeorm -c "SELECT * FROM \"Author\"";
我遇到了問題,主要是弄清楚如何准確設置查詢部分。 我嘗試使用不同的命令,例如:使用 '、"、(),但除了這個符號外,沒有什么對我有用。
用於在受密碼保護的數據庫中直接運行 SQL 命令。 它寧願在命令行中使用連接字符串格式。 使用此命令:
psql -d postgresql://postgres:password@localhost:5432/dbname
-c "create database sample1 --or any command"
## Using SQL file
PGPASSWORD=myPassword psql -h myDbHost -U myUser -p 5432 -d my_db -a -q -f /path/to/sql/file.sql
## Or
PGPASSWORD=myPassword psql -h myDbHost -U myUser -p 5432 -d my_db < /path/to/sql/file.sql
## Using command
PGPASSWORD=myPassword psql -h myDbHost -U myUser -p 5432 -d my_db -c "select * from my table limit 1;"
對於特定類型的語句,您可以找到更適合使用Azure Data Studio
-內置命令行附帶的所有其他功能。 在工作室中,您可以找到打字說明並更輕松地閱讀輸出。
請按照以下步驟操作:
連接到本地或遠程服務器:
僅專注於編寫和執行SQL:
有許多不錯的功能,例如保存連接,創建服務器組甚至內置終端(如果您更願意通過psql
執行某些任務)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.