Download CSV of all pages of paginated table?

We have a paginated table and when we click the download button it only downloads one page. Is there a fix to download the whole table?

is your table server-side paginated? (i.e. does your sql query return 10 rows at a time, or does it return all 1000 at the same time)

@abdul-nimeri server side!

ah got it! yeah so the table doesn’t quite support downloading server-side things like that (and maybe we don’t want to support that –– what if your table was actually millions of rows!)

another thing you can instead do is write a JS query to download the whole table as CSV. it would look something like this:

^there’s actually a small bug with this where it jsonifies the file instead of keeping it as CSV, but we’re fixing it! would this approach work for you @alex-godin ?

is this bug fixed

and what is the fetchWholeTable function?

yes the bug is fixed!

ah, fetchWholeTable was the name of my sql query that fetched the whole table (i.e. without any LIMIT statement)

try it out and lmk if it works for you

@abdul-nimeri can you share your fetchWholeTable again? It seems to be deleted from your reply

Hey @annaxwang – the fetchWholeTable that Abdul referenced is just a SQL query that fetches an entire table without a limit statement (which you might have had in an original query if you were server side paginating). So if you wanted to download your users table, you might set up a query to get the whole table like:

SELECT * FROM users;

Then you’d build a Javascript query to download those results to CSV (this is kind of complicated if you need to deal with escaping characters like a comma or quote). If you call the above query getUsers you can trigger it and work with the resulting data in a Javascript query with syntax like this:

getUsers.trigger({
  onSuccess: function(data) {
    //Do something with data here
  }
})

For some direction on how to download JSON as a CSV, there’s some content in this Medium post.

1 Like

Is there any size limit when downloading a CSV (or any file) from retool when using this method?
We are having exceptions thrown when the file size exceeds 100mb.