在linux下导入.sql文件,数据库中文乱码
现象描述
我是在aix下面导入如下SQL语句时,数据库中显示乱码。
1 | insert into CONFERENCE(CONFERENCEID,SUBCONFERENCEID,ACCESSNUMBER,ACCOUNTID,ALLOCATEDID,ALLOWVIDEOCONTROL,SCREENTYPE,SCREENSWITCHMODE,BOARDNUM,CANRECORD,CHARGEMODE,CONFERENCEMODE,CONFERENCESTATE,CONFERENCETYPE,CYCLETYPE,ENDTIME,ENTERPROMPT,FACTENDTIME,LANGUAGE,LEAVEPROMPT,LENGTH,LOCKSTATE,MEDIATYPES,MEMBERNOTIFY,MEMO,NEEDADDMEMOTOSMS,NEEDAUTOINVITE,NEEDAUTOKINESCOPE,NEEDAUTORECORD,NEEDINVITEPWD,NEEDPARTICIPATORLIMIT,ORGANIZATIONID,PERMITINVITE,PERMITKINESCOPE,PERMITRECORD,REALORGANIZATIONID,REASON,RECORDFILEPATH,RESERVESIZE,SCHEDULENOTIFY,SCHEDUSERMOBILE,SCHEDUSERNAME,CONFERENCESIZE,SPEAKSTATE,STARTTIME,SUBJECT,SUMMERTIME,TIMEZONE,UPDATENOTIFY,VOICERECORDSTATE,VOICETOPICPATH,VOICETOPICSTATE,EXT1,EXT2,EXT3) values ( '0000152972' ,2, '25001' , '1' ,16,0, '' , '' , '1270015060' ,0, 'scheduler' , 'COMMON' , 'Schedule' , 'schedule' , 'cycle' ,1238251500000, '' ,1238251500000, 'zh_cn' , '' ,840, '' , 'video' ,1, '' ,0,0,0,0,0,0, 'topOrganization' ,1,1,1, 'topOrganization' ,0, '20090328/meet0000152972' ,3,1, '' , '' ,3,1,1238201100000, '周期视频会议' ,0,56,1, 'UnRecord' , '0000152972' , 'UnRecord' , null , null , null ); |
1.2 可能原因
1、插入的SQL语句中的字段包含中文,由于数据库字符集与操作系统字符集设置不同,导致数据库显示乱码。
2、从本地(不乱码)传到服务器上后就乱码,如果再导入数据的话就必然乱码,所以要解决传递文件的问题
1.3 处理步骤
以oracle用户登录数据库所在机器。 以sysdba用户连接数据库。
% sqlplus / as sysdba
检查数据库字符集参数“NLS_LANGUAGE”的值。
SQL> select value from nls_database_parameters where parameter='NLS_LANGUAGE';
显示参数值为“AMERICAN”。
1 | VALUE |
1 | -------------------------------------------------------------------------------- |
1 | AMERICAN |
检查数据库字符集参数“NLS_TERRITORY”的值。
SQL> select value from nls_database_parameters where parameter='NLS_TERRITORY';
显示参数值为“AMERICA”。
1 | VALUE |
1 | -------------------------------------------------------------------------------- |
1 | AMERICA |
检查数据库字符集参数“NLS_CHARACTERSET'”的值。
SQL> select value from nls_database_parameters where parameter='NLS_CHARACTERSET';
显示参数值为“WE8MSWIN1252”。
1 | VALUE |
1 | -------------------------------------------------------------------------------- |
1 | WE8MSWIN1252 |
根据在数据库查询的字符集参数,修改数据库所在机器操作系统的字符集“NLS_LANG”变量。
SQL> export NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252
“AMERICAN”、“AMERICA”、“WE8MSWIN1252”是3、4、5的查询结果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人