資料庫管理軟體 Navicat 匯出 Excel 檔案,遇到 [ERR] Support 32767 characters in a cell only 錯誤訊息。解決方式是改用沒有 32767 字元數限制的檔案格式或者使用 SUBSTRING 函數縮減內容長度。
Photo by Chuttersnap on StockSnap |
錯誤狀況
工作上經常使用資料庫管理軟體 Navicat ,透過 SQL 查詢語法,將查詢結果到匯出 Excel 檔案。的將資料表 my_table 的資料匯出,格式包含 id 與 content 兩個欄位。範例 SQL 查詢語法:
SELECT `id`, `content`
FROM `my_table`
匯出過程遇到「[ERR] Support 32767 characters in a cell only」錯誤訊息
Excel 檔案有順利產生,但是有些筆資料的「content」欄位是空白的,沒有順利匯出。
問題原因
微軟 Excel 的規格及限制提到儲存格的資料限制:「一個儲存格可以包含的字元總數:32,767 個字元」每一個中文字或英文字,都算是一個字元。
為了驗證是不是超過 Excel 儲存格字元限制,先利用 MySQL CHAR_LENGTH() 函數,了解欄位的字元數,SQL 查詢語法:
SELECT CHAR_LENGTH(`content`)
FROM `my_table` ORDER BY
CHAR_LENGTH(`content `) DESC
發現有些筆資料的字元數超過 32,767 個字元
解決方式
方法1
如果要字元數可以超過 32,767 個字元,無法使用 Excel 檔案格式,可以改成匯出成 CSV 檔案格式。
方法2
如果要避免字元數超過 32,767 個字元,維持使用 Excel 檔案格式。可以使用 MySQL 字串分割擷取的函數 SUBSTRING,範例 SQL 查詢語法:
SELECT `id`, SUBSTRING(`content`, 1, 32767)
FROM `my_table`
再重新匯出 Excel 檔案即可。
備註:使用 DBeaver Enterprise v.5.2.2 匯出查詢時遇到的錯誤:
Error while exporting table row
The maximum length of cell contents (text) is 32,767 characters
相關文章
參考資料
- Excel 的規格及限制 - Microsoft 支援服務
- MySQL SUBSTRING() Function
- MySQL :: MySQL 8.0 Reference Manual :: 12.8 String Functions and Operators
留言
張貼留言