Postgre 실행명령줄에서 SQL 쿼리
테이블에 데이터를 삽입했습니다.행, 열 및 데이터가 있는 테이블 전체를 보고 싶습니다.명령을 통해 표시하려면 어떻게 해야 합니까?
psql -U username -d mydatabase -c 'SELECT * FROM mytable'
postgresql을 처음 사용하고 명령줄 도구 사용에 익숙하지 않은 경우psql대화형 세션에 들어갔을 때 알아야 할 혼란스러운 행동이 있습니다.
예를 들어 대화형 세션을 시작합니다.
psql -U username mydatabase
mydatabase=#
이때 쿼리를 직접 입력할 수 있지만 세미콜론으로 쿼리를 종료해야 합니다.
예:
mydatabase=# SELECT * FROM mytable;
만약 당신이 세미콜론을 잊어버린다면, 당신이 Enter를 눌렀을 때 당신은 당신의 리턴 라인에 아무것도 얻지 못할 것입니다.psql사용자가 쿼리 입력을 완료하지 않았다고 가정합니다.이것은 모든 종류의 혼란을 초래할 수 있습니다.예를 들어 동일한 쿼리를 다시 입력하면 구문 오류가 발생할 가능성이 높습니다.
실험을 위해 psql 프롬프트에서 원하는 가블을 입력한 다음 Enter 키를 누릅니다. psql은 새 줄을 자동으로 제공합니다.새 줄에 세미콜론을 입력하고 Enter 키를 누르면 ERROR:
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그런 다음 쿼리를 입력합니다.
DB가 암호로 보호되는 경우 해결 방법은 다음과 같습니다.
PGPASSWORD=password psql -U username -d dbname -c "select * from my_table"
응용프로그램(Mac)에서 "SQL Shell(psql)"을 엽니다.
기본 설정에 대해 Enter를 클릭합니다.메시지가 나타나면 암호를 입력합니다.
*) 유형\?도움을 청하여
*) 유형\conninfo연결된 사용자를 확인합니다.
*) 유형\l데이터베이스 목록을 확인합니다.
*) 다음을 통해 데이터베이스에 연결합니다.\c <Name of DB>,예를들면\c GeneDB1
새 DB에 대한 키 프롬프트가 다음과 같이 변경됩니다.
*) 이제 지정된 DB에 있으므로 해당 DB의 스키마를 알고자 합니다.이를 위한 최상의 명령은 다음과 같습니다.\dn.
작동하는 다른 명령(그러나 그렇게 좋지는 않음)은 다음과 같습니다.select schema_name from information_schema.schemata;그리고.select nspname from pg_catalog.pg_namespace;:
-) 이제 스키마가 있으므로 스키마의 테이블을 알고자 합니다.이를 위해 다음을 사용할 수 있습니다.dt지휘권예를들면\dt "GeneSchema1".*
*) 이제 쿼리를 수행할 수 있습니다.예:
*) pgAdmin에서 위의 DB, Schema 및 Table은 다음과 같습니다.
저는 또한 질문이 질문이
선택 * 표 이름에서;
psql 명령 프롬프트에 오류를 표시하고
"표 이름"에서 *를 선택합니다;
아주 이상하게 운영되니까 큰따옴표를 잊지 마세요.저는 항상 데이터베이스를 좋아했습니다 :-(
나는 @Grant 답변을 의심하지 않습니다.그러나 가끔 열 이름이 natural과 같은 postgresql의 예약된 키워드와 유사한 경우 쿼리 필드에 "\natural\"이 필요하기 때문에 명령줄에서 유사한 SQL을 실행하기 어렵습니다.따라서 SQL을 별도의 파일로 작성하고 명령줄에서 SQL 파일을 실행하는 것이 제 접근 방식입니다.이것도 또 다른 장점이 있습니다.큰 스크립트에 대한 쿼리를 변경해야 하는 경우 스크립트 파일이나 명령을 누를 필요가 없습니다.이렇게 SQL 파일만 변경합니다.
psql -h localhost -d database -U postgres -p 5432 -a -q -f /path/to/the/file.sql
- 명령 프롬프트를 열고 Postgres가 설치된 디렉토리로 이동합니다.내 경우 Postgres 경로는 "D:\TOOLS\Postgresql-9.4.1-3"입니다.그런 다음 Postgres의 bin 디렉토리로 이동합니다.명령 프롬프트가 "D:\TOOLS\Postgresql-9.4.1-3\bin>"으로 표시됩니다.
- 이제 "UserId" 값을 사용하여 사용자 테이블에서 "UserName"을 선택하는 것이 목표입니다.데이터베이스 쿼리는 "Select u"입니다.uWhereu 사용자의 "UserName"입니다.사용자 ID "=1"입니다.
postgres의 psql 명령 프롬프트에 대해서도 동일한 쿼리가 아래와 같이 작성됩니다.
D:\TOOLS\Postgresql-9.4.1-3\bin>psql -U postgres -d DatabaseName -h localhost - t -c "선택 u.사용자 uWhereu에서 \"사용자 이름\".\"UserId\"=1;
윈도우 머신에서 하나의 명령어에 대한 경험을 추가하겠습니다.테이블 콘텐츠를 가져올 단일 명령을 실행하려고 했습니다.
이것은 나에게 효과적인 단일 명령입니다.
psql -U postgres -d typeorm -c "SELECT * FROM \"Author\"";
- -U postgres - 사용자
- -dtypeorm - 연결할 데이터베이스
- -c... - 내 쿼리 명령
- - 세미콜론
주로 쿼리 파트를 정확하게 설정하는 방법에 문제가 있었습니다.', ", ", ()와 같은 다른 명령어를 사용해 보았으나 이 표기법 외에는 아무 것도 작동하지 않았습니다.
## 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;"
암호로 보호된 데이터베이스에서 SQL 명령을 직접 실행하는 경우.명령줄에서 연결 문자열 형식을 사용하는 것이 좋습니다.다음 명령을 사용합니다.
psql -d postgresql://postgres:password@localhost:5432/dbname
-c "create database sample1 --or any command"
언급URL : https://stackoverflow.com/questions/19674456/run-postgresql-queries-from-the-command-line
'programing' 카테고리의 다른 글
| 교차()의 반대쪽 (0) | 2023.05.04 |
|---|---|
| Swift 3 - 날짜 객체 비교 (0) | 2023.05.04 |
| Eclipse를 제거하는 방법은 무엇입니까? (0) | 2023.05.04 |
| 모든 핵심 데이터 관계에 역관계가 있어야 합니까? (0) | 2023.05.04 |
| Microsoft Excel은 파일을 저장할 때 어떤 문자 집합을 사용합니까? (0) | 2023.05.04 |








