当前位置: 首页 > 知识库问答 >
问题:

psql cli循环查询结果并使用AWS cli

阳建弼
2023-03-14

我正在尝试重命名AWS S3存储桶中的大量文件。我所做的是在docker容器映像中使用psql。

我做了docker exec-it[数据库名]bash

然后,是否从t1中选择了*psql-c-d[数据库名]

如何访问上面psql查询的结果并循环遍历它,以便在每次迭代中,我将使用AWS CLI命令操作将桶A中的对象移动和重命名为桶B

E.g
//Results from query
**NAME**
George
Kim
Sam

**S3 Bucket A**
file_one.pdf
file_two.pdf
file_three.pdf

**S3 Bucket B (need to rename and move here)**
file_one_george.pdf
file_one_kim.pdf
file_one_same.pdf

我看到了类似于aws s3的东西--递归mv s3://

我需要运行一个类似于那篇文章的AWS命令,但需要遍历psql查询结果。对此不确定,但我是否也需要对AWS Bucket A中的每个文件使用某种逻辑

if (file one name in bucket A == psql query result row[x] name)
  //run aws cli command to rename file and move to new bucket

共有1个答案

东方志尚
2023-03-14

您需要将查询结果写入文件。可以使用重定向操作符执行此操作

psql -d [dbname] -c 'select * from t1' > output.txt

即使我们将查询存储在输出中。txt,它可能仍在您最初登录的docker映像上。您需要将本地目录装载为卷,以便进行文件输出或将docker查询的输出通过管道传输到文件。例如,要使用名为postgres的用户在名为my\u DB的数据库中获取表accounts,命令如下:

docker exec -it my_db bash -c "psql -U postgres -d my_db -c 'select * from accounts'" > output.txt

您的命令可能是(尽管您可能需要更改DB用户名的-U postgres):

docker exec -it [dbname] bash -c "psql -U postgres -d [dbname] -c 'select * from t1'" > output.txt

然后,您可以从文件中加载查询结果以运行一个脚本,该脚本将使用aws命令重命名S3存储桶。

 类似资料:
  • 我正在尝试对从刀片模板中的控制器中的查询返回的数据数组运行foreach循环。无论我如何尝试,我总是会收到一个错误,说“Undefined offset:1”。如果我只是简单地打印出,它会显示我所期望的,但由于某种原因,它没有foreach循环。 下面是我从日志中的查询中得到的一个打印输出(实际数组显然有更多的值): 我一直在尝试不同的方法,因为这是我最终要实现的目标: 我希望这是一件简单的事情,

  • 问题内容: 我是node(express)和pg-promise的新手,还无法弄清楚如何将每个嵌套查询(loop)的结果添加到主json数组结果查询中。 我有两个表:帖子和评论。 因此,我想将每个评论的结果添加到每个帖子中并返回帖子。我有这个,但是不起作用: 答案: 选项1(最佳选择) : 通过JSON到psql进行单个查询( JSON查询 ) 参见@ vitaly-t的回答 要么 使用ajax异

  • 问题内容: 该表表示类别层次结构,层次结构顶部的元素的父ID为NULL。该表如下所示: 我正在尝试做的是建立一个SQL查询,这将使我返回: 任何给定[categoryId]的[categoryId],[categoryName]链。它应该循环并获取每一行,直到到达具有parentId == NULL的行为止。 如上面的示例示例234-> 91-> 35-> 20-> 1-> NULL(STOP)

  • 我可以运行查询以获取文档的确切数量吗? 我有收藏: 执行查询: 回应1份文件,但我需要2份 看到这种反应的最佳方式是什么?

  • 要运行查询,在工具栏中点击 运行 。如果查询语句是正确的,该查询将被运行,如果该查询应该返回数据,结果 选项卡会打开查询返回的数据。如果运行查询时发生错误,运行停止,显示相应的错误信息。 结果 选项卡以网格显示查询返回的结果数据。数据可以用两种模式显示:网格查看 和 表单查看。详细信息请看表查看 器。 提示:Navicat 支持返回 10 个结果集。 注意:你可以通过选择 查看 -> 显示结果 -

  • 你可以在任何的服务器运行查询。在工具栏的下拉式列表中选择目标服务器和数据库。然后点击 “运行”。如果该查询语句是正确的,它将被运行。如果该查询应该返回数据,“结果”选项卡会打开并显示返回的数据。如果运行查询时发生错误,运行会停止并显示相应的错误信息。 “结果”选项卡以网格显示查询返回的结果数据。数据可以用三种模式显示:网格视图、树视图和 JSON 视图。详细信息请参阅数据查看器。 【注意】Navi