【问题标题】:Does Ecto.Adapters.SQL.stream fires multiple query?Ecto.Adapters.SQL.stream 会触发多个查询吗?
【发布时间】:2021-09-13 15:51:14
【问题描述】:

我正在尝试编写一个 cron,它将定期将大型数据集写入 csv 文件并上传到 s3。因此,为了不使用偏移/限制批处理,我正在尝试使用流功能并将数据写入 csv。由于在这里使用原始查询时查询有点复杂,所以不能使用Repo.stream 并偶然发现Ecto.Adapters.SQL.stream 需要原始查询和批量大小。通过查看文档无法弄清楚特定 api 的工作原理,如果有人能解释一下,将非常慷慨。

而且我是 elixir 社区的新手,所以任何有详细解释的资源都会有所帮助。

【问题讨论】:

  • 顺便说一句,这与 phoenix-framework 无关,因此您可能需要删除该标签。

标签: elixir ecto


【解决方案1】:

来自docs

行为取决于适配器。

实施细节取决于您使用的底层数据库。 Ecto.Adapters.SQL 只是公共接口,您设置它以使用“实际”数据库适配器,例如 Postgrex 用于 Postgres,MyXQL 用于 MySQL 等。

Ecto.Adapters.SQL.stream 接受原始查询和批量大小

该函数不需要批量大小。文档显示了:max_rows 的选项,这是整个流的最大行数。 没有任何文档(我能找到)提到批处理。

如果您想自行检查,以下是一些特定数据库提供程序的文档:

【讨论】:

  • 感谢您的解释和参考,我的错不是批量大小。
猜你喜欢
  • 2016-02-01
  • 1970-01-01
  • 2013-07-22
  • 1970-01-01
  • 2018-11-30
  • 1970-01-01
  • 2017-07-20
  • 2019-03-26
  • 1970-01-01
相关资源
最近更新 更多