Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ntamvl/a81b90221f37e064ada9efdeb9b55c42 to your computer and use it in GitHub Desktop.
Save ntamvl/a81b90221f37e064ada9efdeb9b55c42 to your computer and use it in GitHub Desktop.
Dumping and importing from/to MySQL in an UTF-8 safe way

Dumping and importing from/to MySQL in an UTF-8 safe way

In a nutshell: to avoid your shell character set from messing with imports, use -r to export and SOURCE when importing. Dumping safely

# Do not do this, since it might screw up encoding
mysqldump -uroot -p database > utf8.dump # this is bad

Better do:

mysqldump -uroot -p database -r utf8.dump

Note that when your MySQL server is not set to UTF-8 you need to do mysqldump --default-character-set=latin1 (!) to get a correctly encoded dump. In that case you will also need to remove the SET NAMES='latin1' comment at the top of the dump, so the target machine won't change its UTF-8 charset when sourcing.

If you only want to dump the structure without data, use

mysqldump -uroot -p --no-data database -r utf8.dump

Importing a dump safely

# Do not do this, since it might screw up encoding
mysql -u username -p database < dump_file # this is bad

Better do:

mysql -uroot -p --default-character-set=utf8 database
mysql> SET names 'utf8'
mysql> SOURCE utf8.dump

source: https://makandracards.com/makandra/595-dumping-and-importing-from-to-mysql-in-an-utf-8-safe-way

@chuaweijie
Copy link

Thank you very much for this. This saved my research project.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment