Export MySQL query to Excel file
Jump to navigation
Jump to search
Export MySQL query to Excel file (XLS or XLSX file)
Methods[edit]
One step conversion: ex MySQL query -> Excel file[edit]
Methods of exporting MySQL query -> XLS/XLSX file: PHP scripts or other MySQL client softwares e.g.
- PHPExcel: PHP scripts
- Using Database management tools e.g. Toad for MySQL for Win
, $ Navicat GUI for Win
& macOS
Notice the limit of Excel XLS file format:
- "Total number of characters that a cell can contain: 32,767 characters"
- Using MySQL SUBSTRING() function ex: SUBSTRING(string_column, 1, 32767) for EXCEL 97[1]-2007[2] (XLS 檔)
- validate the count of characters: MySQL CHAR_LENGTH or Excel LEN functions
- "Length of formula contents: 8,192 characters" If the content start with the symbol = or -, Excel will consider the content is formula.
- Using CONCAT ' symbol ex: CONCAT('\'', string_column) If the content is not formula.
- "Worksheet size: 1,048,576 rows":
- Using LIMIT 1048576 for EXCEL 2007
integrated solution for Excel limit 1 ~ limit 3
- SELECT SUBSTRING(IF(LEFT(string_column, 1) = '-' OR LEFT(string_column, 1) = '=', CONCAT('\'', string_column), string_column), 1, 32767) FROM <table> LIMIT 1048576
相關文章
Two steps conversion ex: MySQL query -> CSV file -> Excel file[edit]
Step 1: Export the MySQL query -> CSV file[edit]
Approaches
- Database management tools (MySQL client softwares)
- PHPExcel
- MySQL :: MySQL 5.7 Reference Manual :: 8.4.3 Dumping Data in Delimited-Text Format with mysqldump
- Required FILE permission ex: GRANT FILE ON *.* TO 'user_name'@'localhost'; If you met the following error message:
mysqldump: Got error: 1045: Access denied for user 'user_name'@'localhost' (using password: YES) when executing 'SELECT INTO OUTFILE'
Condition
- Condition 1: If the rows count of MySQL query is larger than 65,535 rows. You can use MS Excel.
- Condition 2: If the rows count of MySQL query is less than 65,535 rows. You can use LibreOffice Calc & MS Excel.
- Condition 3: Replace the double quote with double double quote if the enclosure character is double quote.
- Condition 4: (optional) Replace the return character with space character or other character e.g. ↵ (U+21B5). SQL query syntax:
REPLACE(REPLACE(REPLACE(column_name, '\r\n', ''), '\n', ''), '\r', '') AS column_name
Validation: Use the editor supported Regular expression,
- Search ^[^"] in the csv files to search the rows which contains return symbols. The " symbol is the "text qualifier" what I specified before export the MySQL query.
Step 2: Convert CSV to XLSX/XLS file format.[edit]
- MS Excel
- LibreOffice Calc (LibreOffice Portable)
Step 3: Data verification[edit]
- Verify the data rows count: Equal to the rows count of MySQL query. Not equal to 65,535 rows or less than the rows count of MySQL query.
- Verify the data column is in correct position
If the CSV is not well-formatted, sometimes the data column after imported to Excel is in wrong position.
- Verify the rows count
- If the data size is less than 65,535 rows, convert CSV to Excel/XLS by LibreOffice Calc is recommended.
- If the data size is larger than 65,535 rows, Adjust the MySQL query to avoid the column value contains the
- enclosure character e.g. Tab key
- escape the enclosure character e.g. " become ""
- return symbol to separate different data row.
Troubleshooting of technical issues[edit]
If it costs too much time to convert to Excel file[edit]
The important steps before generating CSV file. These steps reduce the problems when the CSV file was converted to Excel file.
- Add delimiter character between different column ex: comma symbol (,) or tab symbol
- Add enclosure character ex: double quote symbol (") or single quote symbol (')
- Add escape character escape the column value if contains the enclosure character
- Remove return symbol[3]:
SELECT REPLACE(REPLACE(REPLACE(`my_column`, '\r\n', ' '), '\n', ' '), '\r', ' ')
Data format in result set became string after exported as Excel file[edit]
- Number data types in result set became string after exported as XLSX file [4]
- Date time data types in result set became string after exported as XLSX file[5]
Microsoft Excel (XLS or XLSX) & OpenDocument Spreadsheet (ODS) file limits[edit]
Microsoft Excel#Microsoft Excel (XLS or XLSX) & OpenDocument Spreadsheet (ODS) file limits
References[edit]
Data factory flow
- 🔍 Data Collection: 1. How to extract content from websites
- 🧹 Data Cleaning: 2. Data cleaning, 3. Regular expression
- ⚙️ Data Processing: 4. Json encode and decode, 5. Convert between date and unix timestamp, 6. MySQL commands
- 📊 Data Analysis: 7. Data exploration
- 📤 Data Output: 8. Comparison of common data file formats, 9. Export MySQL query to Excel file, 10. Microsoft Excel
- 🔧 Troubleshooting: 11. Troubleshooting of MySQL errors