Mysql

如何在 MySQL 中轉義特殊字元

  • November 25, 2020

當我select * .. | mysql ... > /tmp/file從帶有文本的表中進行操作時,有一些有問題的字元會阻止我使用copy(postgres)或load into(mysql)將其載入到不同的數據庫中。諸如製表符、換行符之類的字元會自動轉換為\nand \t,但一些有問題的字元是 escape ^[、 CR ^M^U^Z^F^H也許還有其他我以前沒見過的字元。

通常我會像 一樣替換它echo "select * .." | mysql .. | sed 's/\r/\\r/g',但是那裡有太多未知字元。因此,與其在選擇後替換它們,我想要一個檢索已經轉義的文本的函式(我想刪除它們也可以)。

我該怎麼做?

要轉義除 NULL、新行和製表符之外的所有特殊字元:

select * .. | mysql ... | sed 's/[\x04-\x08\x0B-\x1F\x7F]/ /g' > /tmp/file

有用的連結:

https://stackoverflow.com/questions/6534556/how-to-remove-and-all-of-the-escape-sequences-in-a-file-using-linux-shell-sc

引用自:https://dba.stackexchange.com/questions/280245