ฉันแทรกข้อมูลลงในตาราง .... ฉันต้องการดูทั้งตารางด้วยแถวและคอลัมน์และข้อมูล ฉันจะแสดงมันผ่านคำสั่งได้อย่างไร
ฉันแทรกข้อมูลลงในตาราง .... ฉันต้องการดูทั้งตารางด้วยแถวและคอลัมน์และข้อมูล ฉันจะแสดงมันผ่านคำสั่งได้อย่างไร
คำตอบ:
psql -U username -d mydatabase -c 'SELECT * FROM mytable'
หากคุณยังใหม่กับ postgresql และไม่คุ้นเคยกับการใช้เครื่องมือบรรทัดคำสั่งpsql
มีพฤติกรรมที่สับสนบางอย่างที่คุณควรทราบเมื่อคุณเข้าสู่เซสชันแบบโต้ตอบ
ตัวอย่างเช่นเริ่มต้นเซสชันแบบโต้ตอบ:
psql -U username mydatabase
mydatabase=#
ณ จุดนี้คุณสามารถป้อนแบบสอบถามได้โดยตรง แต่คุณต้องอย่าลืมยกเลิกแบบสอบถามด้วยเครื่องหมายอัฒภาค;
ตัวอย่างเช่น:
mydatabase=# SELECT * FROM mytable;
หากคุณลืมเครื่องหมายอัฒภาคดังนั้นเมื่อคุณกด Enter คุณจะไม่ได้รับสิ่งใดในบรรทัดส่งคืนเนื่องจากpsql
จะถือว่าคุณยังไม่ได้ป้อนข้อความค้นหาของคุณ สิ่งนี้สามารถนำไปสู่ความสับสนทุกชนิด ตัวอย่างเช่นหากคุณป้อนคำถามเดียวกันอีกครั้งคุณจะมีข้อผิดพลาดทางไวยากรณ์
เป็นการทดลองให้ลองพิมพ์ garble ใด ๆ ที่คุณต้องการที่พร้อมท์ psql แล้วกด Enter 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
พิมพ์แบบสอบถามของคุณ
psql -U username -c your_database "SELECT * FROM my_table"
cmd.exe /c chcp 1252
หลังจากคุณเปิดพร้อมท์คอนโซล
psql: FATAL: database "SELECT * FROM tb_name" does not exist
หากฐานข้อมูลของคุณได้รับการป้องกันด้วยรหัสผ่านวิธีแก้ไขจะเป็นดังนี้:
PGPASSWORD=password psql -U username -d dbname -c "select * from my_table"
เปิด "SQL Shell (psql)" จาก Applications (Mac) ของคุณ
คลิกป้อนการตั้งค่าเริ่มต้น ป้อนรหัสผ่านเมื่อได้รับแจ้ง
*) พิมพ์\?
เพื่อขอความช่วยเหลือ
*) พิมพ์\conninfo
เพื่อดูผู้ใช้ที่คุณกำลังเชื่อมต่อเป็น
*) พิมพ์\l
เพื่อดูรายการฐานข้อมูล
*) เชื่อมต่อกับฐานข้อมูล\c <Name of DB>
ตัวอย่างเช่น\c GeneDB1
คุณควรเห็นการแจ้งขอเปลี่ยนคีย์เป็น DB ใหม่ดังนี้:
*) ตอนนี้เมื่อคุณอยู่ในฐานข้อมูลที่กำหนดคุณต้องการทราบ Schemas สำหรับฐานข้อมูลนั้น \dn
คำสั่งที่ดีที่สุดที่จะทำคือ
คำสั่งอื่น ๆ ที่ใช้งานได้ (แต่ไม่ดีเท่า) select schema_name from information_schema.schemata;
และselect nspname from pg_catalog.pg_namespace;
:
-) เมื่อคุณมี Schemas แล้วคุณต้องการรู้ตารางใน Schemas เหล่านั้น เพื่อที่คุณสามารถใช้dt
คำสั่ง ตัวอย่างเช่น\dt "GeneSchema1".*
*) ตอนนี้คุณสามารถทำข้อสงสัยของคุณ ตัวอย่างเช่น:
*) นี่คือลักษณะของ DB, Schema และ Tables ด้านบนใน pgAdmin:
แบบสอบถามเดียวกันเขียนไว้ด้านล่างสำหรับพรอมต์คำสั่ง psql ของ postgres
D: \ TOOLS \ Postgresql-9.4.1-3 \ bin> psql -U postgres -d DatabaseName -h localhost - t -c "เลือกคุณ \" ชื่อผู้ใช้ \ "จากผู้ใช้ u ที่คุณ \ \" UserId \ "= 1;
ฉันไม่สงสัยเลยในคำตอบของ @Grant แต่ฉันต้องเผชิญกับปัญหาเล็กน้อยบางครั้งเช่นถ้าชื่อคอลัมน์คล้ายกับคำสำคัญที่สงวนไว้ของ postgresql เช่นเป็นธรรมชาติในกรณีนี้ SQL ที่คล้ายกันนั้นยากที่จะเรียกใช้จากบรรทัดคำสั่งเนื่องจากจะต้องใช้ "\ natural \" ในเขตข้อมูล Query ดังนั้นวิธีการของฉันคือการเขียน SQL ในไฟล์แยกต่างหากและเรียกใช้ไฟล์ SQL จากบรรทัดคำสั่ง นี่ก็มีข้อดีอีกอย่างเช่นกัน หากคุณต้องเปลี่ยนแบบสอบถามสำหรับสคริปต์ขนาดใหญ่คุณไม่จำเป็นต้องแตะไฟล์สคริปต์หรือคำสั่ง เปลี่ยนไฟล์ SQL แบบนี้เท่านั้น
psql -h localhost -d database -U postgres -p 5432 -a -q -f /path/to/the/file.sql
ฉันยังสังเกตเห็นว่าแบบสอบถาม
SELECT * จากแท็บเล็ต;
ให้ข้อผิดพลาดในพรอมต์คำสั่ง psql และ
เลือก * จาก "tablename";
ทำงานได้ดีแปลกจริงๆอย่าลืมเครื่องหมายคำพูดคู่ ฉันชอบฐานข้อมูลเสมอ :-(
สำหรับข้อความเฉพาะบางประเภทคุณสามารถค้นหาความเหมาะสมในการใช้งานAzure Data Studio
- สำหรับทุกอย่างที่มาพร้อมกับบรรทัดคำสั่งในตัว การใช้สตูดิโอคุณสามารถค้นหาข้อความสั่งการพิมพ์และอ่านผลลัพธ์ได้อย่างสะดวกสบายยิ่งขึ้น
ทำตามขั้นตอนด้านล่าง:
เชื่อมต่อกับเซิร์ฟเวอร์ภายในหรือระยะไกลของคุณ:
เน้นที่การเขียนและดำเนินการ SQL เท่านั้น:
มีหลายpsql
คุณสมบัติที่ดีทั้งประหยัดการเชื่อมต่อการสร้างกลุ่มเซิร์ฟเวอร์และในตัวแม้ขั้วถ้าคุณมีความสะดวกสบายมากขึ้นการทำงานบางอย่างผ่าน
--single-line
(หรือ-s
) ที่ทำให้ทุกคำสั่งทันทีโดยไม่จำเป็นต้องเพิ่มเซมิโคลอน