將現有的sql腳本導入 Oracle 數據庫,中文亂碼問題


將現有的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:\oracle\product\10.2.0\client_1\NETWORK\ADMIN (客戶端的安裝路徑下)

 

sql 腳本也有一定的編碼格式(可以使用客戶端連接工具保存的sql 文件 來保證sql 腳本文件的編碼正確性)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM