解決 Navicat 匯出 Excel 檔案遇到 [ERR] Support 32767 characters in a cell only 錯誤訊息

資料庫管理軟體 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


相關文章


參考資料

  1. Excel 的規格及限制 - Microsoft 支援服務
  2. MySQL SUBSTRING() Function
  3. MySQL :: MySQL 8.0 Reference Manual :: 12.8 String Functions and Operators


留言