원격 클라이언트에서 연결하는 psql을 통해 다중 SQL 쿼리 사용

Subrahmanyam

shellscript 활동을 사용하여 AWS Datapipeline을 통해 postgressql DB에 연결하고 있습니다. 60 개 테이블의 데이터를 삭제하고 파일에서 테이블로 데이터를 복사해야합니다. 복사 작업이 실패하면 테이블이 비어 있지 않도록 테이블을 이전 상태로 롤백하고 싶습니다. 아래와 같이 여러 개의 psql 문으로 수행하려고하는데 롤백이 예상대로 작동하지 않습니다. 파일 중 하나에 오류가 발생하고 문을 복사하지 못하면 테이블이 삭제되고 비어 있습니다. 그러나 이전 상태로 롤백하고 싶습니다.

'psql -h $2 -d $3 -U $4 -p $7 -c "BEGIN;"
psql -h $2 -d $3 -U $4 -p $7 -c "Delete  from  $var1;"

psql -h $2 -d $3 -U $4 -p $7 -c "\COPY $var1 FROM '$f' csv header;"
VAR3=$?
    echo "$VAR3"
if [ $VAR3 -gt 0 ];
then 
psql -h $2 -d $3 -U $4 -p $7 -c "ROLLBACK;"
else
psql -h $2 -d $3 -U $4 -p $7 -c "COMMIT;"
fi
psql -h $2 -d $3 -U $4 -p $7 -c "END;"'

다음은 복사 명령이 오류를 반환했을 때의 표준 출력 로그입니다.

BEGIN DELETE 560 1 롤백 커밋

Begin, Delete 문 및 복사로 트랜잭션을 시작합니다. 복사가 실패하면 롤백하는 논리를 작성하고 그렇지 않으면 커밋하고 종료합니다. 여기서 무엇이 잘못 되었습니까?

Laurenz Albe

psql호출은 자체 데이터베이스 연결을 만듭니다. 그러나 데이터베이스 트랜잭션은 항상 단일 데이터베이스 연결의 일부이므로 한 psql호출 에서 트랜잭션을 시작하고 다른 호출에서 종료 할 수 없습니다 . 하나.

"여기 문서"를 사용합니다.

psql <<EOF
BEGIN;
...
COMMIT;
EOF

조건부 처리를 위해 \if최신 psql버전 기능을 사용할 수 있습니다 .

여기 문서에 탭 문자가 없는지 확인하십시오. 놀라운 동작을 유발할 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

keycloak 관리 클라이언트의 반환을 통해 keycloak에서 사용자를 만듭니다는 IllegalArgumentException

분류에서Dev

원격 데스크톱 연결을 사용하여 Amazon Workspace 클라이언트 중단

분류에서Dev

원격 PC를 건드리지 않고 SSH를 통해 VNC를 사용하여 로컬 PC에서 X11 창을 원격 PC로 보냅니다.

분류에서Dev

내 프로젝트 중 하나에서 Gradle을 통해 Android 지원 라이브러리 또는 Play 서비스를 사용할 수 없습니다.

분류에서Dev

클라이언트 측에서 서버 통신을 위해 웹 소켓을 사용하고 싶습니다.

분류에서Dev

VPN을 통해 클라이언트 네트워크에 연결된 호스트로 원격 이동

분류에서Dev

클라이언트 측에서 다른 서버를 사용하는 GraphQL 쿼리

분류에서Dev

Microsoft 계정을 사용할 때 원격 데스크톱 연결을 통해 원격 컴퓨터에 액세스 할 수 없습니다.

분류에서Dev

Thrift 클라이언트를 통해 원격 Thrift 서버에 연결하는 방법

분류에서Dev

파일 클라이언트를 통해 원격 서버에 연결

분류에서Dev

다른 클라이언트에 대해 다른 범위를 사용하여 SQL-oracle에서 두 날짜 사이의 모든 달을 가져 오는 방법

분류에서Dev

다른 도메인의 SQL Server에 대한 원격 연결을 허용하는 방화벽 규칙

분류에서Dev

로컬 네트워크 외부에서 원격 데스크톱 연결을 통해 작업 표시 줄이 사라진다

분류에서Dev

C ++에서 TCP 소켓을 사용한 원격 클라이언트 및 서버 통신

분류에서Dev

SSH 연결을 통해 원격 서버를 통해 인터넷에 연결하는 방법

분류에서Dev

다른 테이블을 사용하여 SQL 쿼리에서 중앙값 계산

분류에서Dev

클라이언트를 통한 Nodejs 파일 다운로드 (클라이언트는 서버와 파일 사이에서 '중개자'역할을 함)

분류에서Dev

Docker 및 Gradle을 사용하는 스프링 클라이언트에서 연결이 거부되었습니다.

분류에서Dev

Rails는 activerecord를 사용하여 쿼리 할 때 연결을 이해할 수 없습니다.

분류에서Dev

Android 시스템이 제한된 원격 서비스에 연결된 클라이언트 목록을 관리하는 방법

분류에서Dev

서버 포트에 연결하는 Spring 통합 다중 클라이언트

분류에서Dev

CMFCToolbar 이미지가 원격 데스크톱을 통해 또는 프로젝터에 연결될 때 사라집니다.

분류에서Dev

C #을 사용하여 원격으로 SQL Server Express 2008에 연결하는 데 문제가 있습니다.하지만 Windows ODBC 관리자는 작동합니다.

분류에서Dev

Vertx JDBC 클라이언트에서 SQL 쿼리에 대한 매개 변수 소스로 목록을 사용하는 방법은 무엇입니까?

분류에서Dev

boto3 RDS 클라이언트 Python을 사용하여 AWS Lambda에서 RDS SQL Server 선택 쿼리를 실행하는 방법은 무엇입니까?

분류에서Dev

SQL 쿼리에서 값을 계산하고 동일한 쿼리의 다른 계산에서 해당 값 사용

분류에서Dev

X509Certificate로 인증 된 연결을 지원하려면 사용자 지정 웹 클라이언트와 함께 nest를 사용해야합니다.

분류에서Dev

SQL 쿼리에서 값을 다른 쿼리에 사용하는 방법

분류에서Dev

Elasticsearch에서 Java 클라이언트를 사용하여 원시 쿼리를 발행하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    keycloak 관리 클라이언트의 반환을 통해 keycloak에서 사용자를 만듭니다는 IllegalArgumentException

  2. 2

    원격 데스크톱 연결을 사용하여 Amazon Workspace 클라이언트 중단

  3. 3

    원격 PC를 건드리지 않고 SSH를 통해 VNC를 사용하여 로컬 PC에서 X11 창을 원격 PC로 보냅니다.

  4. 4

    내 프로젝트 중 하나에서 Gradle을 통해 Android 지원 라이브러리 또는 Play 서비스를 사용할 수 없습니다.

  5. 5

    클라이언트 측에서 서버 통신을 위해 웹 소켓을 사용하고 싶습니다.

  6. 6

    VPN을 통해 클라이언트 네트워크에 연결된 호스트로 원격 이동

  7. 7

    클라이언트 측에서 다른 서버를 사용하는 GraphQL 쿼리

  8. 8

    Microsoft 계정을 사용할 때 원격 데스크톱 연결을 통해 원격 컴퓨터에 액세스 할 수 없습니다.

  9. 9

    Thrift 클라이언트를 통해 원격 Thrift 서버에 연결하는 방법

  10. 10

    파일 클라이언트를 통해 원격 서버에 연결

  11. 11

    다른 클라이언트에 대해 다른 범위를 사용하여 SQL-oracle에서 두 날짜 사이의 모든 달을 가져 오는 방법

  12. 12

    다른 도메인의 SQL Server에 대한 원격 연결을 허용하는 방화벽 규칙

  13. 13

    로컬 네트워크 외부에서 원격 데스크톱 연결을 통해 작업 표시 줄이 사라진다

  14. 14

    C ++에서 TCP 소켓을 사용한 원격 클라이언트 및 서버 통신

  15. 15

    SSH 연결을 통해 원격 서버를 통해 인터넷에 연결하는 방법

  16. 16

    다른 테이블을 사용하여 SQL 쿼리에서 중앙값 계산

  17. 17

    클라이언트를 통한 Nodejs 파일 다운로드 (클라이언트는 서버와 파일 사이에서 '중개자'역할을 함)

  18. 18

    Docker 및 Gradle을 사용하는 스프링 클라이언트에서 연결이 거부되었습니다.

  19. 19

    Rails는 activerecord를 사용하여 쿼리 할 때 연결을 이해할 수 없습니다.

  20. 20

    Android 시스템이 제한된 원격 서비스에 연결된 클라이언트 목록을 관리하는 방법

  21. 21

    서버 포트에 연결하는 Spring 통합 다중 클라이언트

  22. 22

    CMFCToolbar 이미지가 원격 데스크톱을 통해 또는 프로젝터에 연결될 때 사라집니다.

  23. 23

    C #을 사용하여 원격으로 SQL Server Express 2008에 연결하는 데 문제가 있습니다.하지만 Windows ODBC 관리자는 작동합니다.

  24. 24

    Vertx JDBC 클라이언트에서 SQL 쿼리에 대한 매개 변수 소스로 목록을 사용하는 방법은 무엇입니까?

  25. 25

    boto3 RDS 클라이언트 Python을 사용하여 AWS Lambda에서 RDS SQL Server 선택 쿼리를 실행하는 방법은 무엇입니까?

  26. 26

    SQL 쿼리에서 값을 계산하고 동일한 쿼리의 다른 계산에서 해당 값 사용

  27. 27

    X509Certificate로 인증 된 연결을 지원하려면 사용자 지정 웹 클라이언트와 함께 nest를 사용해야합니다.

  28. 28

    SQL 쿼리에서 값을 다른 쿼리에 사용하는 방법

  29. 29

    Elasticsearch에서 Java 클라이언트를 사용하여 원시 쿼리를 발행하려면 어떻게해야합니까?

뜨겁다태그

보관