當我有一個帶雙引號的字段時,mysqldump把轉義字符放在前面。例如:mysqldump,避免轉義雙引號
「我的‘測試’」 - > mysqldump的產生與像「我的\‘測試\’」那場文件
的問題是,我使用的文件的一些數據導入一個sqlite數據庫,並且SQLite不會刪除轉義字符。所以我不需要那個mysqldump寫轉義字符,我可以這樣做嗎?
當我有一個帶雙引號的字段時,mysqldump把轉義字符放在前面。例如:mysqldump,避免轉義雙引號
「我的‘測試’」 - > mysqldump的產生與像「我的\‘測試\’」那場文件
的問題是,我使用的文件的一些數據導入一個sqlite數據庫,並且SQLite不會刪除轉義字符。所以我不需要那個mysqldump寫轉義字符,我可以這樣做嗎?
我不能確定你使用的是什麼語言。但是這個概念在任何編程語言中都是一樣的。
首先聲明一個等於您的sqldump的變量。
var yourVariable = sqldump;
然後做一個string.replace(「\\」,「」)。 然後使用'清理'版本導入您的數據。
您使用哪種SQL模式? 看那mysqldump的手冊:http://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
--quote-名稱,內 「`」字符-Q
引用標識符(如數據庫,表名和列名)。如果啓用了ANSI_QUOTES SQL模式,則標識符 在「」「字符中引用。默認情況下啓用此選項。 可以使用--skip-quote-names禁用該選項,但此選項應爲 作爲--compatible其可以使得 --quote-名稱。
--quote-names
默認啓用。
ANSI_QUOTES
治療「「」作爲標識符引號字符(如日e「`」引用 字符)而不是字符串引號字符。您仍然可以使用「`」「 引用啓用此模式的標識符。在啓用ANSI_QUOTES的情況下, 不能使用雙引號引用文字字符串 ,因爲它被解釋爲標識符。
問題出在數據中,而不是表名和列名 – Rahul
如果在* nix(UNIX,LINUX,MAC)的機器,我可以建議使用SED來替換\ 「用」:
mysqldump [options] DB [table] | sed -e 's/\\"/"/g'
,或者對於是已經存在的mydump.sql
文件:
sed -i -e 's/\\"/"/g' mydump.sql
編輯:尋找一個正式的MySQL的答案,我才發現這個有點關係有關單引號轉義開放的bug - https://bugs.mysql.com/bug.php?id=65941
還值得一提的是,還有其他工具可以轉儲數據庫,而不必先用反斜槓引號引用引號,例如JetBrains產品(DataGrip
,IntelliJ
等)。
您可以在mysqldump輸出文件中轉換轉義。 檢查esperlu MySQL to Sqlite converter script:
... /INSERT/ { gsub(/\\\047/, "\047\047") gsub(/\\n/, "\n") gsub(/\\r/, "\r") gsub(/\\"/, "\"") gsub(/\\\\/, "\\") gsub(/\\\032/, "\032") print next } ...
如果你能提供你已經嘗試過的代碼,將是有益的。 – Radmation