sqlplus操作--文件的输入与输出

再sqlplus中执行脚本sql语句,并使结果输出到ouput文件
--关闭console台输出,可以节省时间
set term off;
--再输出的文件中显示执行的sql语句
set echo on;
--显示执行每条语句所用的时间
set timing on;
--每行显示的100个字符
set linesize 100;
--查询结果每一百条分一页
set pagesize 100;
--spool 设置输出文件
spool d:\tempfile\oracle\output.txt;
--执行input.txt里面的sql语句
@ d:\tempfile\oracle\input.txt;
--把内容从缓存里面输出到文件吧
spool off;

执行此操作遇到问题
在output.txt中出现乱码
    1.当把output.txt文件设置为gbk字符编码时,发现input.txt里面的中文乱码
    2.当把output.txt文件设置为utf-8字符编码时,describe emp;输出语句里面的中文乱码
最后把input.txt(原本是utf-8)文件字符编码设置为gbk;

这里主要出现的问题是sqlplus客户端字符编码是gbk,输出的内容为gbk编码,如果把output.txt设置为utf-8则sqlplus客户端穿过来的内容乱码;
因为服务端和客户端都是gbk编码,所以input.txt的所有内容并不会出现字符集转换,所以这里选择把input.txt字符集换成和sqlplus客户端字符集相同,并把output.txt设置为与sqlplus客户端相同,就解决了乱码。

原因可见oracle字符编码的解决

一、查询服务端字符集
    select userenv(‘language‘) from dual; 

    USERENV(‘LANGUAGE‘)
    ----------------------------------------------------
    SIMPLIFIED CHINESE_CHINA.ZHS16GBK

二、 客户端NLS_LANG参数(即sqlplus的参数)该参数用于向Oracle指示客户端操作系统(sqlplus客户端)的字符集。
    select * from v$nls_parameters where parameter=‘NLS_CHARACTERSET‘;  

    PARAMETER                      VALUE
    ------------------------------ ------------------------------
    NLS_CHARACTERSET               ZHS16GBK

    设置客户端NLS_LANG
    C:\Users\85243>set nls_lang=Simplified Chinese_China.ZHS16GBK
    C:\Users\85243>set nls_lang=Simplified Chinese_China.AL32UTF8

三、客户端操作系统字符集
    C:\Users\85243>chcp
    活动代码页: 936
    936代表的是gbk编码 65001代表的是utf-8
时间: 2024-09-28 13:36:59

sqlplus操作--文件的输入与输出的相关文章

C++:文件的输入和输出

1.共同的打开文件方式: fin.open("test.txt",ios::binary) fout.open("test.txt",ios::binary) fboth.open("test.txt",ios::in|ios::out|ios::binary) 或者 fistream fin("test.txt",ios::binary) fostream fout("test.txt",ios::bin

文件的输入和输出

文件的输入和输出 1.程序写入文件 ,应遵循以下规则(1)创建一个ofstream对象来管理输出流(2)将对象和输出流关联起来(3)以使用cout的方式来使用该对象.例如: ofstream fout ; //创建对象 fout.open(“jar.txt”) ; //关联文件 注意: Ofstream fout (“jar.txt”) ;//跟上面的两条语句是等效的那么关于第三点:使用cout的方式来使用该对象,比如: fout << “ I love you !”; 原因:fout对象的类

文件格式化输入和输出

在控制台操作时,使用的格式化输入和输出为scanf和printf,那么对文件的IO操作也可以使用fscanf和fprintf,它们的使用如下: #include <stdio.h> #include <string.h> #include <stdlib.h> const int LENGTH=80; int main(void){ long num1=234567L; long num2=345123L; long num3=789234L; long num4=0L

雷林鹏分享:Ruby 文件的输入与输出

Ruby 文件的输入与输出 Ruby 提供了一整套 I/O 相关的方法,在内核(Kernel)模块中实现.所有的 I/O 方法派生自 IO 类. 类 IO 提供了所有基础的方法,比如 read. write. gets. puts. readline. getc 和 printf. 本章节将讲解所有 Ruby 中可用的基础的 I/O 函数.如需了解更多的函数,请查看 Ruby 的 IO 类. puts 语句 在前面的章节中,您赋值给变量,然后使用 puts 语句打印输出. puts 语句指示程序

Python 文件的输入与输出

1. 文本文件的读写主要通过open()所构建的文件对象来实现.我们打开一个文件,并使用一个对象来表示该文件 , f = open(d,r) 其中d是文件名,r是模式 "r" 文件只读,使用 f.write()会报错 "w" 用于写入,每次使用f.write()都会把上一次给覆盖掉 "r+" 用于读写 "a" 文件追叫,每次写入会追加在前一次后面 ##1. 创建文件对象(%%在编代码的文件夹下建一个new.txt) f=ope

【python】文件的输入和输出

1.os模块 2.os.path 模块 3.实例 1. os模块 对文件系统的访问大多通过python的os模块实现,其中os 模块负责大部分的文件系统操作,包括删除/重命名文件,遍历目录树,管理文件访问权限等. 2.os.path 模块,os.path完成一些针对路径名的操作,包括管理和操作文件路径名中的各个部分,获取文件或子目录信息,文件路径查询等操作. 3.实例 3.1 实例1:os模块和path模块接口使用 # encoding:utf-8 ''' Created on 2014-6-5

【Ruby】文件的输入与输出

阅读目录 puts语句 gets语句 puts语句 print语句 打开和关闭文件 FIle.new方法 FIle.open方法 读取和写入文件 sysread方法 syswrite方法 each_byte方法 IO.readlines方法 IO.foreach方法 重命名和删除文件 文件模式与所有权 文件查询 Ruby中的目录 浏览目录 创建目录 删除目录 创建文件&临时目录 内建函数 Ruby 提供了一整套 I/O 相关的方法,在内核(Kernel)模块中实现.所有的 I/O 方法派生自 I

谈谈python的文件处理——文件的输入与输出

简单介绍一下python里IO的几种常用方式.当然除了以下介绍的几种方式之外,还可以参考python的手册,例如我想查找raw——input函数的用法,我就可以直接使用命令:python -m pydoc raw_input(windows底下)来查看使用方法,使用完毕时候,输入“q”作为退出.下面进入正题: 一.python中的输入 1.与命令行的“博弈”——raw_input函数 #Input: age = raw_input("How old are you? ") height

12.11文件的输入和输出

要点提示:使用scanner类从文件中读取文本数据,使用printWriter类向文本文件写入数据. File对象封装了文件或路径的属性,但是它既不包括创建文件的方法,也不包括从/向文件读/写数据(称为数据输入输出,简称I/O)的方法.为了完成I/O操作,需要使用恰当的Java I/O类创建对象.这些对象包含从/向文件读/写数据的方法.文本文件本质上是存储在磁盘上的字符. 使用printwriter写数据 java.io.PrintWriter类可用来创建一个文件并向文本文件写入数据.首先必须为