Mysql
使用反斜杠進行轉儲和導入
背景
我有一個 MySQL 數據庫,我從中執行
mysqldump
備份。在這個數據庫中,我有一些欄位將包含一些反斜杠,當轉儲它時,它將包含類似
INSERT INTO table1 (col1, col2) VALUES (1, '\frac{1}{2}');
(作為參考,這是TeX,在這種情況下用於排版數學。)
問題
現在,當我用
mysql -u username -p database_name < file.sql
值中的反斜杠
col2
消失。很可能,它不是插入它,而是用於轉義以下字元。題
有沒有辦法在保持反斜杠的同時插入它?
到目前為止,我的想法是製作一個腳本來遍歷文件並替換每次出現的
\
with\\
。這可靠嗎?我會假設有人已經想到了這個問題,並且可能創造了一些處理它的方法。
任何幫助表示讚賞!
如果您使用 mysqldump 導出數據,它會為您處理這些。例如:
mysql> select * from table1; +------+-------------+ | id | mystr | +------+-------------+ | 1 | \frac{1}{2} | +------+-------------+ mysqldump -uroot -p database1 table1 > table1.sql cat table1.sql | grep VALUES INSERT INTO `table1` VALUES (1,'\\frac{1}{2}');
注意到轉義的反斜杠了嗎?和:
mysql -uroot -p database1 < table1.sql mysql -uroot -p database1 -e "select * from table1" Enter password: +------+-------------+ | id | mystr | +------+-------------+ | 1 | \frac{1}{2} | +------+-------------+
你是在什麼情況下執行的
INSERT
?大多數客戶端語言都有一種“轉義 MySQL 需要轉義的內容”的方法。這樣的函式將負責將反斜杠加倍並處理引號。