Export data from MySQL to CSV via command line on Linux

Want to export MySQL data to CSV file via Command Line Interface (CLI) on Linux (Ubuntu/RedHat/CentOS…)?

Using my-cmd, Command Line Interface (CLI) client for MySQL, you can unload MySQL (MariaDB, Percona) data to CSV/TSV/TXT easily and fast. Direct Interaction or Scripting and Automation.

  • No need to install MySQL client library.
  • Convenient to deploy to cloud. No need to run installation file, just uncompress and run, immediately.
  • Commands are entered into a terminal or command prompt, accessed from local or remote (like SSH).
  • Support Windows, Linux, and MacOS.

Download my-cmd Linux version Download my-cmd

Export MySQL (MariaDB, Percona) data to CSV/TSV/TXT via command line on Linux (Ubuntu/RedHat/CentOS…)

1. Unload Table.

1) In interactive mode:

my-cmd> unload
      > table=media_messages 
      > datafile=/data/media_messages.csv 
      > delimiter=, 
      > quote=" 
      > header=y;

2) In batch mode:

my-cmd dsn="pan:withdata@192.168.0.102/test" task=unload table=media_messages datafile=/data/media_messages.csv delimiter=, quote=" header=y quit=y

2. Unload Query.

1) In interactive mode:

my-cmd> unload
      > query="select * from media_messages where id > 100"
      > datafile=/data/media_messages.csv 
      > delimiter=, 
      > quote=" 
      > header=y;

2) In batch mode:

my-cmd dsn="pan:withdata@192.168.0.102/test" task=unload query="select * from media_messages where id > 100" datafile=/data/media_messages.csv delimiter=, quote=" header=y quit=y

3. Unload All Tables.

1) In interactive mode:

my-cmd> unload
      > table=all 
      > folder=/data/tables_data
      > delimiter=, 
      > quote=" 
      > header=y;

2) In batch mode:

my-cmd dsn="pan:withdata@192.168.0.102/test" task=unload table=all folder=/data/tables_data delimiter=, quote=" header=y quit=y

See parameters detail.


More about my-cmd – Command Line Interface (CLI) tool for MySQL

MySQL → CSV reference

Type mapping

Value kindin MySQLin CSV
IntINT1234
BigintBIGINT9007199254740993
DecimalDECIMAL(p,s)1234.56
FloatDOUBLE1.234e+10
TextVARCHAR(n)quoted only when it contains a comma or a quote
Long textLONGTEXTmust be quoted; line breaks inside force multi-line records
DateDATE2026-09-18
DatetimeDATETIME2026-09-18 14:30:00
BinaryLONGBLOBnot representable - base64 or hex string
BooleanTINYINT(1)TRUE / FALSE, or 1 / 0 depending on the writer
JSONJSONthe whole JSON value quoted, with internal quotes doubled

Dialect differences

MySQL is a database server and CSV is a file format, so the gap is wider than a dialect difference – the rows below are where values and structure stop lining up.

Propertyin MySQLin CSV
port3306—
identifiers`backtick`Double quotes; a literal quote is doubled ("" )
row limitLIMIT n—
datesDATETIME, TIMESTAMP, DATE, TIMEConventional text: 2026-09-18 or 2026-09-18 14:30:00
long textTINYTEXT / TEXT / MEDIUMTEXT / LONGTEXT—
binaryBLOB / TINYBLOB / LONGBLOBNot supported
separator—Comma ","
encoding—No declaration - UTF-8 works only with a BOM
typing—None - every field is text
shapeTables of rows and columnsFlat table, optional header row
ceiling—No formal limit; row count bounded by memory

Command line

SideCommand
MySQLmysqldump, or mysql -e "SELECT ..." > out.csv
MySQL (load)mysqlimport, or LOAD DATA INFILE

Convert your data online, free

Free in-browser converters for CSV, Excel, JSON, XML and SQL: Withdata Online Data Conversion. Large files, batch conversion or scheduling? See the offline desktop apps, or browse all data conversion tools.


Posted

in

by