当我们使用 mysql 的 source 命令导入 SQL 文件时,有时会遇到乱码问题。下面是解决这个问题的方法:
1. 修改编码形式
在导入 SQL 文件之前,我们需要确保文件的编码形式与数据库的编码形式一致。可以采用以下方式修改编码形式:
1.1. 查看数据库编码形式
可以使用以下命令查看数据库的编码形式:
show variables like 'character_set_database';
1.2. 修改 SQL 文件编码形式
假设我们的 SQL 文件的编码形式为 GBK,而数据库的编码形式为 UTF-8,可以使用以下命令将 SQL 文件转换为 UTF-8 编码:
iconv -f GBK -t UTF-8 -c source.sql > target.sql
这个命令将原始的 source.sql 文件转换为目标 target.sql 文件,并将原始文件中的非法字符去掉。
1.3. 导入 SQL 文件
现在我们可以使用以下命令导入 SQL 文件了:
source target.sql;
2. 修改会话编码
如果我们不想修改 SQL 文件的编码形式,也可以采用以下方式修改会话编码:
2.1. 查看数据库编码形式
可以使用以下命令查看数据库的编码形式:
show variables like 'character_set_database';
2.2. 修改会话编码
可以使用以下命令修改当前会话的编码形式:
set names utf8;
2.3. 导入 SQL 文件
现在我们可以使用以下命令导入 SQL 文件了:
source source.sql;
这样就可以避免乱码问题了。
示例说明
示例一
假设我们有以下的 SQL 文件:
-- source.sql
create database `测试数据库`;
use `测试数据库`;
create table `测试表` (
`用户名` varchar(20),
`年龄` int
);
insert into `测试表` (`用户名`, `年龄`) values ('张三', 18), ('李四', 20);
我们可以使用以下命令将其转换为 UTF-8 编码:
iconv -f GBK -t UTF-8 -c source.sql > target.sql
然后可以使用以下命令导入 SQL 文件:
source target.sql;
示例二
假设我们已经创建好了数据库 测试数据库
,并且该数据库的编码形式为 GBK,我们可以使用以下命令修改当前会话的编码形式:
set names gbk;
然后可以使用以下命令导入 SQL 文件:
source source.sql;
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql使用source 命令乱码问题解决方法 - Python技术站