명령 행에서 PostgreSQL 쿼리 실행


278

데이터를 테이블에 삽입했습니다. ... 행과 열 및 데이터가있는 전체 테이블을보고 싶습니다. 명령을 통해 어떻게 표시 할 수 있습니까?

답변:


475

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 키를 누르면 오류가 발생합니다.

mydatabase=# asdfs 
mydatabase=# ;  
ERROR:  syntax error at or near "asdfs"
LINE 1: asdfs
    ^

경험의 규칙은 다음과 같습니다. 응답을받지 psql못했지만 최소한 무언가를 기대하고 있다면 세미콜론을 잊어 버렸습니다.;


4
적어도 7.2 (즉, 확인하기 위해 귀찮게 했으므로 더 빠를 수도 있음)이므로 psql에는 세미콜론을 추가 할 필요없이 모든 명령을 즉시 수행 할 수 있는 옵션 --single-line(또는 -s)이 있습니다.
Gordon

3
디버깅에 한 시간을 보냈으며 세미콜론이 누락되었습니다. 감사합니다
Dawson B

106
SELECT * FROM my_table;

어디에 my_table당신의 테이블의 이름입니다.

편집하다:

psql -c "SELECT * FROM my_table"

또는 그냥 psql검색어를 입력하십시오.


7
psql -U username -c your_database "SELECT * FROM my_table"
DrColossos

3
말했듯이 세미콜론으로 명령을 끝내야합니다 . Windows 시스템 인 경우 기본적으로 콘솔 프롬프트를 연 후 Windows 사용자를위한 notws를 참조하십시오 cmd.exe /c chcp 1252.
D_Guidi

2
미래의 사용자를위한 쿼리하기 전에 데이터베이스 이름 앞에 -d를 추가해야하고, -c 수 : psql의 -U 사용자 이름 -d하여 MyDatabase -c 'MYTABLE SELECT * FROM'
jmhead

2
나를 위해 일하지 않았다. 나는했다psql: FATAL: database "SELECT * FROM tb_name" does not exist
Jaswinder

@DrColossos가 지적했듯이 적어도 Windows cli / batch 환경에서는 명령 주위에 큰 따옴표가 필요합니다.
jewbix.cube

43

DB가 비밀번호로 보호 된 경우 솔루션은 다음과 같습니다.

PGPASSWORD=password  psql -U username -d dbname -c "select * from my_table"

3
이 방법으로 비밀번호를 제공 할 수 있음을 절대 알 수 없습니다. 테스트를 할 때 정말 편리합니다. 감사합니다
zhihong

21

응용 프로그램 (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 및 Tables 모양입니다.

여기에 이미지 설명을 입력하십시오


3
  1. 명령 프롬프트를 열고 Postgres가 설치된 디렉토리로 이동하십시오. 필자의 경우 Postgres 경로 는 "D : \ TOOLS \ Postgresql-9.4.1-3"입니다. 그런 다음 Postgres의 bin 디렉토리로 이동하면 명령 프롬프트가 "D : \ TOOLS \ Postgresql-9.4.1-3으로 표시됩니다. \ bin> "
  2. 이제 내 목표는 "UserId"값을 사용하여 users 테이블에서 "UserName"을 선택하는 것입니다. 따라서 데이터베이스 쿼리는 사용자의 " Select u."UserName "입니다. 여기서 u."UserId "= 1 "입니다.

postgres의 psql 명령 프롬프트에 대해 아래와 같은 쿼리가 작성됩니다.

D : \ TOOLS \ Postgresql-9.4.1-3 \ bin> psql -U postgres -d DatabaseName -h localhost-t -c "사용자로부터 u. \"UserName \ "선택 u 여기서 u. \"UserId \ "= 1;


3

@Grant 답변에 의심의 여지가 없습니다. 그러나 열 이름이 자연 과 같은 postgresql의 예약 키워드와 유사한 경우와 같은 문제가 발생합니다 .이 경우 쿼리 필드에 "\ natural \"가 필요하므로 명령 줄에서 유사한 SQL을 실행하기가 어렵습니다. 그래서 내 접근 방식은 SQL을 별도의 파일로 작성하고 명령 줄에서 SQL 파일을 실행하는 것입니다. 이것은 또 다른 장점이 있습니다. 큰 스크립트에 대한 쿼리를 변경해야하는 경우 스크립트 파일이나 명령을 터치 할 필요가 없습니다. 이처럼 SQL 파일 만 변경하십시오.

psql -h localhost -d database -U postgres -p 5432 -a -q -f /path/to/the/file.sql

3

나는 또한 쿼리가

SELECT * FROM 테이블 이름;

psql 명령 프롬프트에서 오류를 제공하고

SELECT * FROM "tablename";

훌륭하고 이상하게 실행되므로 큰 따옴표를 잊지 마십시오. 나는 항상 데이터베이스를 좋아했다 :-(


-8

특정 유형의 명령문의 경우 사용하기에 더 적합한 것을 찾을 수 있습니다 Azure Data Studio. 스튜디오를 사용하면 타이핑 문장과 출력을보다 편안하게 읽을 수 있습니다.

아래 단계를 따르십시오.

  1. Azure Data Studio 설치 -데이터 개발에 중점을 둔 최신 크로스 플랫폼 편집기입니다. PostgreSQL 자체가 기반으로하는 두 가지 사항은 오픈 소스이며 확장 가능합니다.
  2. PostgreSQL 확장 설치
  3. 로컬 또는 원격 서버에 연결하십시오.

    여기에 이미지 설명을 입력하십시오

  4. SQL 작성 및 실행에만 집중하십시오.

    여기에 이미지 설명을 입력하십시오

를 통해 작업을 수행하는 것이 더 편한 경우 연결 저장, 서버 그룹 생성 및 내장 터미널 등의 유용한 기능 이 많이 있습니다 psql.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.