DynamoDB에 저장된 데이터를 일괄 적으로 CSV로 출력하고 싶습니다.

4400 단어 DynamoDBAWS

소개



DynamoDB로 테이블을 완전히 얻는 것은 꽤 어렵지 않습니까?
작성된 순서대로 item(RDB에서 말하는 레코드 같은 것)을 전건 나란히 해석하고 싶다! 같은 것도 어렵다 🤔

1회의 Scan로 취득할 수 있는 데이터가 최대 1MB라는 제약이 좀처럼 귀찮고,
DynamoDB 콘솔에서 쉽게 모든 데이터를 내보낼 수 없습니다.
페이지당 표시수를 MAX의 300건으로 해도, 전건을 취득하기 위해서 「다음 페이지 취득」을 연타해, CSV를 export할 필요가 있었습니다.



어떻게든 쉽게 할 수 있는 방법은 없는지 여러가지 조사하고 있었는데,
아래의 방법으로 명령 한 번으로 테이블의 내용을 완전히 CSV로 내보낼 수 있게 되었습니다.

일괄 적으로 CSV로 출력하는 방법



전제 조건


  • AWS Config에서 AccessKey 또는 프로파일을 설정합니다.
  • AWS CLI를 사용할 수 있도록 설정

  • 절차


  • jq 명령을 사용하므로 설치
    (Mac 환경이므로 brew로 설치하고 있습니다 🍎)
  • AWS CLI와 jq 명령을 결합한 명령을 실행합니다.

    terminal
    # jqコマンドをインストール
    $ brew install jq
    
    # インストールされたことを確認
    $ jq --version
    jq-1.6
    
    # 全件取得とCSV出力のコマンド発行
    $ aws dynamodb scan --table-name HogeTable --profile hoge-profile | jq -r '["ID","ユーザー名","作成日"], (.Items[] | [.ID.N, .Name.S, .createdAt.S]) | @csv' > sample.csv
    

    명령 상세



    AWS CLI에서 DynamoDB에서 값을 JSON으로 검색



    terminal
    aws dynamodb scan --table-name HogeTable --profile hoge-profile
    

    이 명령은 DynamoDB에서 지정한 테이블 내용을 JSON 형식으로 검색합니다.HogeTable 를 대상 테이블 이름으로 설정하고 hoge-profile~/.aws/config 로 설정한 프로파일로 설정하십시오.
    뭔가 잘 안돼! 그렇다면 먼저이 명령으로 JSON을 가져올 수 있는지 확인하십시오.

    jq 명령으로 JSON을 CSV로 성형



    terminal
    jq -r '["ID","ユーザー名","作成日"], (.Items[] | [.ID.N, .Name.S, .createdAt.S]) | @csv'
    

    여기에서 JSON을 CSV 형식으로 성형하고 있습니다.jq -r 'ヘッダー, (項目) | @csv' 라는 이미지입니다.aws dynamodb scan ~ 커멘드로 취득되는 JSON은 이하와 같은 형식일까 생각하기 때문에, 거기에 맞추어 항목의 부분을 설정합니다.

    terminal
    # aws dynamodb scan ~で取得できるJSON例
    {
        "Items": [
            {
                "ID": {
                    "N": "1"
                },
                "Name": {
                    "S": "清水真太郎"
                },
                "createdAt": {
                    "S": "2021-09-13T02:33:07.443Z"
                }
            },
            {
                "ID": {
                    "N": "2"
                },
                "Name": {
                    "S": "柴田大知"
                },
                "createdAt": {
                    "S": "2021-09-13T02:37:27.542Z"
                }
            }
        ]
    }
    

    성형된 CSV 데이터를 CSV 파일로 출력



    terminal
    > sample.csv
    

    마지막으로 CSV 데이터를 CSV 파일로 출력하고 있습니다.

    요약



    DynamoDB 테이블에 맞게 명령을 작성하는 데 처음 시간이 걸리지만,
    한 번 작성해 버리면 언제든지 곧 모든 건을 CSV로 내보낼 수 있게 되었습니다! 😇

    DynamoDB의 Tips 있으면 꼭 알려주세요!
  • 좋은 웹페이지 즐겨찾기