Programing

명령 행에서 PostgreSQL 쿼리 실행

lottogame 2020. 4. 10. 08:05
반응형

명령 행에서 PostgreSQL 쿼리 실행


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


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못했지만 최소한 무언가를 기대하고 있다면 세미콜론을 잊어 버렸습니다.;


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 및 Tables 모양입니다.

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


  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 "입니다.

The same query is written as below for psql command prompt of postgres.

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;


I have no doubt on @Grant answer. But I face few issues sometimes such as if the column name is similar to any reserved keyword of postgresql such as natural in this case similar SQL is difficult to run from the command line as "\natural\" will be needed in Query field. So my approach is to write the SQL in separate file and run the SQL file from command line. This has another advantage too. If you have to change the query for a large script you do not need to touch the script file or command. Only change the SQL file like this

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

psql명령 줄을 통해 쿼리를 실행해야하는 이유는 무엇 입니까?

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

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

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

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

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

참고 URL : https://stackoverflow.com/questions/19674456/run-postgresql-queries-from-the-command-line

반응형