Ssh
通過 ssh 複製帶有重音符號的 sql 文件
我正在嘗試將一個數據庫從伺服器 A 遷移到伺服器 B。
數據庫是mysql。該數據庫有一些帶有ç,ãé,…等字元的記錄
數據庫編碼為UTF8
所以在伺服器A上我像這樣導出
mysqldump -u root -p sis > sis3.sql
然後我打開文件(用
vi
)並且字元不正確。所以我嘗試了mysqldump -u root -p sis --default-character-set=utf8 > sis3.sql
還不行。然後
mysqldump -u root -p sis --default-character-set=latin1 > sis3.sql
現在文件似乎沒問題。
副本
複製到伺服器 B 是從伺服器 B 使用
scp -i p root@0.0.0.0:/home2/sis3.sql ~/
但是每當我將字元集複製到伺服器 B 時,該文件就永遠不會正常。“特殊”字元總是錯誤的。
我嘗試以三種方式導入(latin1,utf8,無預設),都出錯了。
我這樣導入:
mysql -u root -p"pwdpwdpwd" --default-character-set=utf8 sis < sis3.sql
當然,更改預設字元集。
但是,在我導入 mysql 之前,該文件已經“損壞”,我認為這可能導致過度 ssh 傳輸。
有沒有辦法轉移mysql數據庫而沒有這個問題?
伺服器資訊
伺服器 A
Linux version 2.6.32-5-amd64 (Debian 2.6.32-48squeeze6) (jmm@debian.org) (gcc version 4.3.5 (Debian 4.3.5-4) ) #1 SMP Tue May 13 16:34:35 UTC 2014 # locale locale: Cannot set LC_ALL to default locale: No such file or directory LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_CTYPE="en_US.UTF-8" LC_NUMERIC=pt_BR.UTF-8 LC_TIME=pt_BR.UTF-8 LC_COLLATE="en_US.UTF-8" LC_MONETARY=pt_BR.UTF-8 LC_MESSAGES="en_US.UTF-8" LC_PAPER=pt_BR.UTF-8 LC_NAME=pt_BR.UTF-8 LC_ADDRESS=pt_BR.UTF-8 LC_TELEPHONE=pt_BR.UTF-8 LC_MEASUREMENT=pt_BR.UTF-8 LC_IDENTIFICATION=pt_BR.UTF-8 LC_ALL=
伺服器 B
Linux version 4.4.0-0.bpo.1-amd64 (debian-kernel@lists.debian.org) (gcc version 4.9.2 (Debian 4.9.2-10) ) #1 SMP Debian 4.4.6-1~bpo8+1 (2016-03-20) # locale LANG=pt_BR.UTF-8 LANGUAGE= LC_CTYPE="pt_BR.UTF-8" LC_NUMERIC=pt_BR.UTF-8 LC_TIME=pt_BR.UTF-8 LC_COLLATE="pt_BR.UTF-8" LC_MONETARY=pt_BR.UTF-8 LC_MESSAGES="pt_BR.UTF-8" LC_PAPER=pt_BR.UTF-8 LC_NAME=pt_BR.UTF-8 LC_ADDRESS=pt_BR.UTF-8 LC_TELEPHONE=pt_BR.UTF-8 LC_MEASUREMENT=pt_BR.UTF-8 LC_IDENTIFICATION=pt_BR.UTF-8 LC_ALL=
我發現了一些對其他人有用的東西
http://alexking.org/blog/2008/03/06/mysql-latin1-utf8-conversion
事情是導出為 latin1 並將文件更改為“set NAMES utf8”,因為我所有的表都是 utf8。
工作。
- 檢查您的終端或終端仿真器是否使用UTF-8編碼。
locale
轉儲 shell 的配置,而不是終端仿真器的配置。如果使用
--default-character-set=utf8
,輸出將被utf8
編碼。因此,如果您的終端(在伺服器 A 上)未正確顯示,則您的終端配置已損壞。例如在 gnome-terminal 菜單中,選擇
Terminal
,Set Character Encoding
2. 如果伺服器 A 和 B 上文件的 md5sum 校驗和相同,則可以“確定”文件已正確傳輸。