[database] 명령 행에서 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 “입니다.

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;


답변

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

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


답변

나는 또한 쿼리가

SELECT * FROM 테이블 이름;

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

SELECT * FROM “tablename”;

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