.. _csv_export: CSV Export ========== Any Datasette table, view or custom SQL query can be exported as CSV. To obtain the CSV representation of the table you are looking, click the "this data as CSV" link. You can also use the advanced export form for more control over the resulting file, which looks like this and has the following options: .. image:: advanced_export.png * **download file** - instead of displaying CSV in your browser, this forces your browser to download the CSV to your downloads directory. * **expand labels** - if your table has any foreign key references this option will cause the CSV to gain additional ``COLUMN_NAME_label`` columns with a label for each foreign key derived from the linked table. `In this example `_ the ``city_id`` column is accompanied by a ``city_id_label`` column. * **stream all rows** - by default CSV files only contain the first :ref:`config_max_returned_rows` records. This option will cause Datasette to loop through every matching record and return them as a single CSV file. You can try that out on https://latest.datasette.io/fixtures/facetable?_size=4 Streaming all records --------------------- The *stream all rows* option is designed to be as efficient as possible - under the hood it takes advantage of Python 3 asyncio capabilities and Datasette's efficient :ref:`pagination ` to stream back the full CSV file. Since databases can get pretty large, by default this option is capped at 100MB - if a table returns more than 100MB of data the last line of the CSV will be a truncation error message. You can increase or remove this limit using the :ref:`config_max_csv_mb` config setting. You can also disable the CSV export feature entirely using :ref:`config_allow_csv_stream`. A note on URLs -------------- The default URL for the CSV representation of a table is that table with ``.csv`` appended to it: * https://latest.datasette.io/fixtures/facetable - HTML interface * https://latest.datasette.io/fixtures/facetable.csv - CSV export * https://latest.datasette.io/fixtures/facetable.json - JSON API This pattern doesn't work for tables with names that already end in ``.csv`` or ``.json``. For those tables, you can instead use the ``_format=`` querystring parameter: * https://latest.datasette.io/fixtures/table%2Fwith%2Fslashes.csv - HTML interface * https://latest.datasette.io/fixtures/table%2Fwith%2Fslashes.csv?_format=csv - CSV export * https://latest.datasette.io/fixtures/table%2Fwith%2Fslashes.csv?_format=json - JSON API