将现有的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 (客户端的安装路径下)

 

sql 脚本也有一定的编码格式(可以使用客户端连接工具保存的sql 文件 来保证sql 脚本文件的编码正确性)

posted @   panie2015  阅读(8729)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示