将现有的sql脚本导入 Oracle 数据库,中文乱码问题
将现有的sql 脚本导入 Oracle数据库
比如 在windows 系统下,可以写一个 bat 来实现直接导入
如:bat 中的内容如下,logs.log 将会记录执行日志
1 | sqlplus user/password @dbname @create .sql > logs.log |
create.sql 中的内容可以是需要执行的sql 语句,也可以是其他sql 脚本,如:
1 2 | @leave_create .sql exit |
leave_create.sql 中的内容如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | create table a_employee ( id number( 10 ) primary key , name varchar2( 255 ) not null , password varchar2( 255 ) not null , email varchar2( 255 ) , role varchar2( 255 ) , manager_id number( 10 ) ); create sequence seq_employee minvalue 1 nomaxvalue start with 1 increment by 1 nocycle nocache; INSERT INTO a_employee(id,name,password,email,role,manager_id) VALUES (seq_employee.nextval, '老板' , '123' , 'ee@163.com' , 'boss' ,NULL); INSERT INTO a_employee(id,name,password,email,role,manager_id) VALUES (seq_employee.nextval, '主任' , '123' , 'cc@163.com' , 'manager' , 1 ); INSERT INTO a_employee(id,name,password,email,role,manager_id) VALUES (seq_employee.nextval, '员工' , '123' , 'aa@163.com' , 'user' , 3 );); commit; |
执行bat 文件,理论上数据创建完成。
打开日志文件,发现文件中报错
ERROR:
ORA-01756: quoted string not properly terminated
查询数据,发现 中文显示乱码
解决方法:
检查客户端的编码格式
使用sqlplus 连接数据库 执行 Select userenv('language') from dual; 查询结果为:AMERICAN_AMERICA.ZHS16GBK
设置windows 环境变量
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
TNS_ADMIN=D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN (客户端的安装路径下)
TNS_ADMIN=D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN (客户端的安装路径下)
sql 脚本也有一定的编码格式(可以使用客户端连接工具保存的sql 文件 来保证sql 脚本文件的编码正确性)
作者:panie
出处:http://www.cnblogs.com/panie2015/
如果您希望与我交流互动,欢迎加我微信
本文内容为作者辛苦整理书写,欢迎转载,但请保留文章出处
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?