Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何通过aws cli将dynamodb表导出为csv(不使用管道)_Amazon Web Services_Csv_Amazon Dynamodb_Aws Cli - Fatal编程技术网

Amazon web services 如何通过aws cli将dynamodb表导出为csv(不使用管道)

Amazon web services 如何通过aws cli将dynamodb表导出为csv(不使用管道),amazon-web-services,csv,amazon-dynamodb,aws-cli,Amazon Web Services,Csv,Amazon Dynamodb,Aws Cli,我是aws cli新手,我正在尝试将dynamodb表导出为csv,以便可以将其直接导入postgresql。有没有办法使用aws cli实现这一点 到目前为止,我遇到了这个命令aws dynamodb scan——表名。但这不提供csv导出选项。此外,通过这个命令,我可以在命令提示符下获得输出,但我不知道如何将其写入文件 如果所有项目都具有相同的属性,例如id和name都是字符串,则运行: aws dynamodb scan \ --table-name mytable \ -

我是aws cli新手,我正在尝试将dynamodb表导出为csv,以便可以将其直接导入postgresql。有没有办法使用aws cli实现这一点


到目前为止,我遇到了这个命令aws dynamodb scan——表名。但这不提供csv导出选项。此外,通过这个命令,我可以在命令提示符下获得输出,但我不知道如何将其写入文件

如果所有项目都具有相同的属性,例如
id
name
都是字符串,则运行:

aws dynamodb scan \
    --table-name mytable \
    --query "Items[*].[id.S,name.S]" \
    --output text
这将提供制表符分隔的输出。您可以使用
>output.txt
将其重定向到文件,然后您可以轻松地将选项卡转换为csv的逗号

请注意,您可能需要根据以下内容进行分页:

如果扫描的项目总数超过最大数据集大小限制1 MB,则扫描将停止,并将结果作为LastEvaluatedKey值返回给用户,以便在后续操作中继续扫描。结果还包括超出限制的项目数量。扫描可能导致没有符合筛选条件的表数据


另一个选项是github上的项目。

对于localhost dynamodb:

$aws dynamodb scan --table-name AOP --region us-east-1 --endpoint-url
http://localhost:8000 --output json > /home/ohelig/Desktop/a.json
$aws dynamodb scan --table-name AOP --region us-east-1 --output json > /home/ohelig/Desktop/a.json
对于dynamodb:

$aws dynamodb scan --table-name AOP --region us-east-1 --endpoint-url
http://localhost:8000 --output json > /home/ohelig/Desktop/a.json
$aws dynamodb scan --table-name AOP --region us-east-1 --output json > /home/ohelig/Desktop/a.json
然后将JSON转换为CSV或其他格式

我已经修改了上面的答案以澄清问题。

您可以使用将aws cli提供的json输出转换为csv

aws dynamodb scan --table-name mytable --query "Items[*].[id.S,name.S]" --output json | jq -r '.[] | @csv' > dump.csv

无需ListSign out即可完整导出所有列的更好方法是

基本上

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

所有项都具有相同的属性,但数据类型不同。此查询是否适用于不同的数据类型?在这种情况下,只需提供适当的数据类型,例如:name.S、zipcode.N、isawesome.B。是否有其他方法来实现此目的?因为我的输出显示在控制台中,这需要大量时间来处理大数据…@Khan web搜索将产生导出DynamoDB表的其他选项,但影响性能的关键因素将是表的已配置读取容量(RCU)。您可能希望暂时增加该值,执行导出,然后再拨回。@n0obcoder扫描实际上会隐式限制返回结果的数量(我将更新答案),但您也可以提供
--max items N
。参见文档。我得到
jq:error(at:1811):数组([{“N”:“1559…)在csv行中无效
我最喜欢这个答案。谢谢,这是一个很好的解决方案!缺点是,如果字段是一个集合,它似乎是空的…在这种情况下,您需要使用上面的答案。S表示这只适用于字符串字段。用.N替换它只适用于数字字段。如何使它适用于strinG和数字同时出现?