我是AWS CLI新手,我正在尝试以CSV格式导出DynamoDB表,以便直接导入PostgreSQL。有没有办法使用AWS CLI来实现这一点?我看到了这个命令:aws dynamodb scan --table-name <table-name>-但这不提供CSV导出选项。使用此命令,我可以在终端中看到输出,但不确定如何将其写入文件。
aws dynamodb scan --table-name <table-name>
n53p2ov01#
如果所有项都具有相同的属性,例如id和name都是字符串,则运行:
id
name
aws dynamodb scan \ --table-name mytable \ --query "Items[*].[id.S,name.S]" \ --output text
这将给予制表符分隔的输出。你可以使用> output.txt将其重定向到file,然后你可以很容易地将制表符转换为csv格式的逗号。请注意,您可能需要按照scan documentation:如果扫描的项目总数超过1 MB的最大数据集大小限制,扫描将停止,并将结果作为LastEvaluatedKey值返回给用户,以便在后续操作中继续扫描。结果还包括超过限制的项目数。扫描可能导致没有符合筛选条件的表数据。另一个选择是github的DynamoDBtoCSV项目。
> output.txt
yacmzcpb2#
对于本地主机dynamodb:
$aws dynamodb scan --table-name AOP --region us-east-1 --endpoint-url http://localhost:8000 --output json > /home/ohelig/Desktop/a.json
对于发电机b:
$aws dynamodb scan --table-name AOP --region us-east-1 --output json > /home/ohelig/Desktop/a.json
然后将JSON转换为CSV或其他格式。我已经修改了上面的答案,使之更清楚。
rt4zxlrg3#
完整导出所有列而不列出的更好方法是Dynamo db export to csv基本上
aws dynamodb scan --table-name my-table --select ALL_ATTRIBUTES --page-size 500 --max-items 100000 --output json | jq -r '.Items' | jq -r '(.[0] | keys_unsorted) as $keys | $keys, map([.[ $keys[] ].S])[] | @csv' > export.my-table.csv
41zrol4v4#
您可以使用jq将aws cli提供的json输出转换为csv
aws dynamodb scan --table-name mytable --query "Items[*].[id.S,name.S]" --output json | jq -r '.[] | @csv' > dump.csv
68de4m5k5#
您可以使用jq将json转换为csv
aws dynamodb query \ --table-name <table-name> \ --index-name <index-name> \ --select SPECIFIC_ATTRIBUTES \ --projection-expression "attributes1, attributes2,..." \ --key-condition-expression "#index1 = :index1 AND #index2 = :index2" \ --expression-attribute-names '{"#index1": "index1","#index2": "index2"}' \ --expression-attribute-values '{":index1": {"S":"key1"},":index2": {"S":"key2"}}' \ --output json | jq -r '.Items' | jq -r '(.[0] | keys_unsorted) as $keys | $keys, map([.[ $keys[] ][]?])[] | @csv' > output.csv
但要注意,如果列数据长度不同,则会产生错误的输出
5条答案
按热度按时间n53p2ov01#
如果所有项都具有相同的属性,例如
id
和name
都是字符串,则运行:这将给予制表符分隔的输出。你可以使用
> output.txt
将其重定向到file,然后你可以很容易地将制表符转换为csv格式的逗号。请注意,您可能需要按照scan documentation:
如果扫描的项目总数超过1 MB的最大数据集大小限制,扫描将停止,并将结果作为LastEvaluatedKey值返回给用户,以便在后续操作中继续扫描。结果还包括超过限制的项目数。扫描可能导致没有符合筛选条件的表数据。
另一个选择是github的DynamoDBtoCSV项目。
yacmzcpb2#
对于本地主机dynamodb:
对于发电机b:
然后将JSON转换为CSV或其他格式。
我已经修改了上面的答案,使之更清楚。
rt4zxlrg3#
完整导出所有列而不列出的更好方法是Dynamo db export to csv
基本上
41zrol4v4#
您可以使用jq将aws cli提供的json输出转换为csv
68de4m5k5#
您可以使用jq将json转换为csv
但要注意,如果列数据长度不同,则会产生错误的输出