1

Postgrex 文档给出了这个如何传输数据的优秀示例:

Postgrex.transaction(pid, fn(conn) ->
  query = Postgrex.prepare!(conn, "", "COPY posts TO STDOUT")
  stream = Postgrex.stream(conn, query, [])
  result_to_iodata = fn(%Postgrex.Result{rows: rows}) -> rows end
  Enum.into(stream, File.stream!("posts"), result_to_iodata)
end)

Postgrex.transaction(pid, fn(conn) ->
  stream = Postgrex.stream(conn, "COPY posts FROM STDIN", [])
  Enum.into(File.stream!("posts"), stream)
end)

但是,这不适用于 Redshift,因为 Redshift 不支持 COPY TO STDOUT。如果我从 Postgrex 尝试它,我会得到一个语法错误,与从 psql 尝试它一样。根据 Redshift,“不支持从 Xen-tables 复制到文件”。

所以我将我的 COPY TO STDOUT 切换为 SELECT,但现在我不知道如何在第二部分中加载它。如果我将其保留为 COPY FROM STDIN,它只会将所有结果加载到一行中。

有什么建议么?

4

0 回答 0