阿里云部署数据库导入中文编码乱码

基于阿里云Centos7的Oracle数据库导入中文编码乱码问题

    最近本人在部署一个ssm项目到阿里云服务后发现项目获取的数据总是会中文编码乱码的问题,后来发现可能是数据库编码问题,但是把数据库编码修改成utf-8之后还是会出现中文乱码,后来尝试自己写一条数据库插入语句插入到表中发现居然能显示中文,这时候才顿悟是不是我在本地导出sql文件的时候编码格式设置错了,经过修改编码格式后,再重新导入sql到数据库。测试成功,不存在中文编码乱码问题。

一、登录用户

使用Xshell登录到阿里云centos之后

使用 su - oracle登录安装oracle数据库的用户(本人这里使用的是oracle用户安装oracle数据库、注意:su命令后面一定要加 横杠‘-’否则登录成功的oracle用户可能使用sqlplus / as sysdba命令时候会提示、找不到改命令、至于为什么本人也还不清楚,知道的大神可以评论下方留言)

二、修改Oracle数据库字符集编码为UTF-8

先用sqlplus 系统用户登录:

sqlplus / as sysdba;

然后执行下面的命令即可:

shutdown immediate;     //关闭数据库服务器
startup mount;
alter session set sql_trace=true;
alter system enable restricted session;
alter system set job_queue_processes=0;
alter system set aq_tm_processes=0;
alter database open;
alter database character set internal_use utf8;
alter session set sql_trace=false;
shutdown immediate;

startup;

三、创建数据库用户(如果已经创建有数据库需要删除所有表,在本地导出sql文件时务必选择utf-8编码格式,如果导出的文件的编码格式是gbk则导入sql文件到数据库生成表插入的数据则会中文乱码)

创建一个用户

create user test_user identified by password;

(此处的test_user是你想要创建的用户名,password是你创建用户的密码)

授予用户连接数据库和获取资源的权限

grant  connect,resource  to  test_user;

登录用户

conn test_user;

输入刚才创建用户时设置的密码

使用test_user登录成功后

导入你的sql文件

start /home/oracle/test.sql

(这里的/home/oracle/是本地的sql上传到阿里云的/home/oracle/目录下)

导入成功后,查看导入的数据库表

select table_name from user_tables;

查看某个数据库表的所有数据

select * from t_user;

(t_user是用户表)

注意:你在本地的数据库导出的时候一定要选择UTF-8格式,否则在上传到阿里云后导入数据库时会出现中文编码乱码(这里才是问题所在),例如本人在本地使用的是Oracle SQL Developer数据库工具,导出时如下选择编码格式,选择导出的编码格式和导出的sql文件的位置后一直选择下一步直到完成为止。本地导出sql文件成功后使用winSCP或者其他ftp文件上传工具上传到阿里云服务器的/home/oracle目录下。

阿里云部署数据库导入中文编码乱码_第1张图片


你可能感兴趣的:(Oracle数据库)