将现有的sql 脚本导入 Oracle数据库
比如 在windows 系统下,可以写一个 bat 来实现直接导入
如:bat 中的内容如下,logs.log 将会记录执行日志
sqlplus user/password@dbname @create.sql > logs.log
create.sql 中的内容可以是需要执行的sql 语句,也可以是其他sql 脚本,如:
@leave_create.sql exit
leave_create.sql 中的内容如下
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:oracleproduct10.2.0client_1NETWORKADMIN (客户端的安装路径下)
TNS_ADMIN=D:oracleproduct10.2.0client_1NETWORKADMIN (客户端的安装路径下)
sql 脚本也有一定的编码格式(可以使用客户端连接工具保存的sql 文件 来保证sql 脚本文件的编码正确性)