Skip to content

Instantly share code, notes, and snippets.

View hassanRsiddiqi's full-sized avatar
🏠
Working from home

Hassan Raza hassanRsiddiqi

🏠
Working from home
View GitHub Profile
@hassanRsiddiqi
hassanRsiddiqi / stream_csv.ex
Created November 1, 2020 09:18 — forked from avdgaag/stream_csv.ex
Streaming CSV straight out of the database to the client using Elixir, Phoenix, Ecto and PostgreSQL.
def index(conn, _params) do
conn = conn
|> put_resp_content_type("text/csv")
|> put_resp_header("content-disposition", "attachment; filename=export.csv")
|> send_cunked(200)
Repo.transaction fn ->
Ecto.Adapters.SQL.stream(Repo, "COPY expensive_report TO STDOUT CSV HEADER")
|> Stream.map(&(chunk(conn, &1.rows)))
|> Stream.run