2011-07-12 53 views
0

有一個MySQL備份文件,它是一個巨大的文件 - 約3 GB。有一個表具有存儲JPEG圖像數據的LONGBLOB列。使用EmEditor將Unicode文件保存爲其他格式將會扭曲/更改格式。解?

的文件成功導入,如果從MySQL Workbench中完成 - 數據導入/恢復。

我需要打開這個文件並提取頭幾行(大約兩行INS​​ERT與表中的圖像數據),以便我可以測試另一個程序是否可以將該數據導入另一個MySQL數據庫。

我試着用EmEditor打開文件(這很擅長打開大文件),然後只複製/粘貼腳本的一個插入語句到一個新文件中(最多約25行,因爲所討論的表是備份腳本中的第一個表),然後將選擇內容粘貼到新文件中。

這裏談到的問題:

然而,這打亂了編碼(儘管我保存爲UTF-8)。我意識到這一點時,我嘗試導入(恢復)這個新的文件(再次使用MySQL工作臺)到MySQL數據庫,恢復向前走沒有錯誤,但在BLOB列JPEG圖像正在破壞/損壞。

我的猜測是,編碼是原始文件和新文件之間的不同。

EmEditor中不顯示原始文件的編碼,有檢測一個選項,它檢測爲「UTF8無符號」。但是保存時我將它保存爲UTF8。我也嘗試保存爲ANSI,ISO8859(Windows默認)等,但每次都是相同的結果。

你有這個特殊問題的任何解決方案?即我只想切割大型備份文件的前幾行並保存到一個新文件,保持編碼相同,以便圖像(斑點)不會更改。有沒有什麼辦法可以用EmEditor完成(也就是說我有錯誤的方法[即剪切粘貼]?)有什麼專門的軟件可以做到這一點?我如何診斷這裏出了什麼問題?

感謝您的任何答覆。

回答

0

這打亂了編碼(儘管我保存爲UTF-8)

UTF-8是不是任意的二進制數據的一個不錯的選擇。有很多高字節的序列在UTF-8中是無效的,所以在load-alter-save過程中你會在某個時刻對它們進行破解。

如果您使用的是每一個字節映射到唯一的字符的編碼加載該文件,並使用相同的編碼重新保存文件,你應該保留原來的內容(*)。 ISO-8859-1是通常爲此選擇的編碼,因爲它只是將每個字節0..0xFF映射到具有相同編號的Unicode編碼點。

(*:假設編輯器是二進制安全對於像空其他棘手的點,\n/\r和其他控制字符......我相信了EmEditor就可以了。)

0

當打開原始文件EmEditor嘗試選擇編碼爲二進制(ASCII視圖)。正如bobince所說,二進制(ASCII視圖)會將每個字節映射到一個唯一的字符,並在保存該文件時保留該字符。我認爲這應該可以解決你的問題。

相關問題