DynamoDB에 저장된 데이터를 일괄 적으로 CSV로 출력하고 싶습니다.
소개
DynamoDB로 테이블을 완전히 얻는 것은 꽤 어렵지 않습니까?
작성된 순서대로 item(RDB에서 말하는 레코드 같은 것)을 전건 나란히 해석하고 싶다! 같은 것도 어렵다 🤔
1회의 Scan로 취득할 수 있는 데이터가 최대 1MB라는 제약이 좀처럼 귀찮고,
DynamoDB 콘솔에서 쉽게 모든 데이터를 내보낼 수 없습니다.
페이지당 표시수를 MAX의 300건으로 해도, 전건을 취득하기 위해서 「다음 페이지 취득」을 연타해, CSV를 export할 필요가 있었습니다.
어떻게든 쉽게 할 수 있는 방법은 없는지 여러가지 조사하고 있었는데,
아래의 방법으로 명령 한 번으로 테이블의 내용을 완전히 CSV로 내보낼 수 있게 되었습니다.
일괄 적으로 CSV로 출력하는 방법
전제 조건
절차
(Mac 환경이므로 brew로 설치하고 있습니다 🍎)
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 있으면 꼭 알려주세요!
Reference
이 문제에 관하여(DynamoDB에 저장된 데이터를 일괄 적으로 CSV로 출력하고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mcf-ryotaro/items/9376db31c110c7c9f195텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)