获得SAS默认编码(其实是通过启动时加载配置文件决定的,nls),

"D:\Program Files\SASHome9.4\SASFoundation\9.4\sas.exe" -CONFIG "d:\Program Files\SASHome9.4\SASFoundation\9.4\nls\zh\sasv9.cfg"

1

"D:\Program Files\SASHome9.4\SASFoundation\9.4\sas.exe"-CONFIG"d:\Program Files\SASHome9.4\SASFoundation\9.4\nls\zh\sasv9.cfg"

启动后无法修改,如果尝试通过下面命令设置,会得到警告,

option encoding='utf-8';

1

optionencoding='utf-8';

WARNING 30-12: SAS option ENCODING is valid only at startup of the SAS System. The SAS option is ignored.

%put &sysencoding;

*or;

data _null_;

val=GETOPTION('encoding');

put val=;

run;

1

2

3

4

5

6

7

8

9

%put&sysencoding;

*or;

data_null_;

val=GETOPTION('encoding');

putval=;

run;

因此在导入、导出的时候,我们可以指定导入文件或者导出文件的编码。

比如,要导入的csv文件为utf-8,变量为中文,代码如下,

options validvarname=any;

FILENAME nls "X:\job\test1.csv" ENCODING="utf-8";

PROC IMPORT OUT= WORK.TEST2

DATAFILE= nls

DBMS=CSV REPLACE;

GETNAMES=YES;

DATAROW=2;

RUN;

1

2

3

4

5

6

7

8

9

10

11

optionsvalidvarname=any;

FILENAMEnls"X:\job\test1.csv"ENCODING="utf-8";

PROCIMPORTOUT=WORK.TEST2

DATAFILE=nls

DBMS=CSVREPLACE;

GETNAMES=YES;

DATAROW=2;

RUN;

对应的UTF-8编码文件输出,

FILENAME export "X:\job\test2.csv" ENCODING="utf-8";

PROC EXPORT DATA= TEST2

OUTFILE= export

DBMS=csv REPLACE;

RUN;

1

2

3

4

5

6

FILENAMEexport"X:\job\test2.csv"ENCODING="utf-8";

PROCEXPORTDATA=TEST2

OUTFILE=export

DBMS=csvREPLACE;

RUN;

This example creates a SAS data set from an external file. The external file’s encoding is in UTF-8, and the current SAS session encoding is Wlatin1. By default, SAS assumes that the external file is in the same encoding as the session encoding, which causes the character data to be written to the new SAS data set incorrectly.

To tell SAS what encoding to use when reading the external file, specify the ENCODING= option. When you tell SAS that the external file is in UTF-8, SAS then transcodes the external file from UTF-8 to the current session encoding when writing to the new SAS data set. Therefore, the data is written to the new data set correctly in Wlatin1.

如果不指定编码,SAS会默认导出和导出的文件编码同自身默认的编码一致。

另外我们可以对SAS数据库指定编码。

比如转换SAS dataset的编码,

*转换整个目录;

libname inlib cvp 'c:\temp';

libname outlib 'c:\' outencoding='UTF-8';

proc copy noclone in=inlib out=outlib;

run;

*转换指定数据库

libname inlib cvp 'c:\temp';

libname outlib 'c:\' outencoding='UTF-8';

proc copy noclone in=inlib out=outlib;

select dataset_name;

run;

1

2

3

4

5

6

7

8

9

10

11

12

13

*转换整个目录;

libnameinlibcvp'c:\temp';

libnameoutlib'c:\' outencoding='UTF-8';

proc copy noclone in=inlib out=outlib;

run;

*转换指定数据库

libname inlib cvp 'c:\temp';

libname outlib 'c:\'outencoding='UTF-8';

proccopynoclonein=inlibout=outlib;

selectdataset_name;

run;

sas 导入csv文件_SAS导入导出时编码问题汇总相关推荐

  1. sas 导入csv文件_SAS导入外部数据

    SAS导入外部数据 成功导入外部数据是sas分析的第一步,也是最基础的一步,其重要性我就不累述.在常规工作中我们经常使用excel,access等建立数据,不管数据类型是什么,举一反三,一是百通.在本 ...

  2. sas 导入csv文件_sas导入txt、csv文件方法

    不要使用导入导出向导,直接使用infile来导入类似平面文件(excel不是平面文件,需要先打开EXCEL把数据另存为TXT或者CSV等平面文件). 如果是CSV那么delimiter = ',' 如 ...

  3. python导入csv文件-jupyter 导入csv文件方式

    先将准备的文件上传到自己的jupyter工作空间 import numpy as np import pandas as pd housing = pd.read_csv('housing.csv') ...

  4. plsql如何导入csv文件,PLSQL导入csv文件到数据库

    搜索热词 好久不用oracle了,突然忘记怎么导入数据了.今天再记录一下吧. 1.建表.目的是:被导入到数据的存储位置. 因为数据库中曾经有过相同表结构的表,所以直接使用sql建表. sql" ...

  5. Oracle数据库表导出和导入csv文件操作

    Oracle数据库表导出和导入csv文件操作 数据库是Oracle 9i 1.导出csv文件 这个十分简单,用pl/sql工具即可,首先选中要导出的表,右键选择Query data,在左侧出现的窗口中 ...

  6. C# 导入CSV文件,导出到CSV文件

    导入CSV文件 public static DataTable ImportFromCsv(string filePath)//从csv读取数据返回table {//Encoding encoding ...

  7. CSV文件的导入和导出

    导入导出CSV文件是一个较为常用的工具类,这里我就做下简单的总结,方便以后使用 废话不多说直接上代码 CSV主要工具类 package com.example.csv;import java.io.B ...

  8. SAS导入csv文件乱码解决办法

    我们现在有一个csv文件,而且文件比较大,有80M左右. 我们使用下面的语句来导入csv文件 option compress = yes validvarname = any; libname dp ...

  9. 向oracle中导入*.csv文件

    向oracle中导入*.csv文件 1.什么是*.csv,如何得到? 里面存放的是数据表.每行代表数据库表格的一行, 每行中,每两个数据中间由逗号","分割. *.csv可以通过& ...

最新文章

  1. 重磅《美国机器智能国家战略》
  2. 使用Maven 实现打包生成一个可执行jar包:附详细配置解释说明
  3. USB 之四 USB 发展(更名)史 / USB 规范变化
  4. 02-HTTP的请求方法以及响应状态码
  5. 注册/找回密码等功能中发送手机验证码后倒计时效果的实现(基于vue)
  6. c语言存储大范围整形,C语言整形数值范围问题
  7. 为什么说读博是最好的选择?
  8. sqlite关于时间的处理
  9. [转载] python学习笔记——@property装饰器
  10. 矩阵卷积运算过程讲解
  11. 每日单词20110507
  12. 如何退出或卸载奇安信天擎软件
  13. 数据库复杂查询,左联右联 聚合 计数 时间查询等,持续更新
  14. 游戏开发中道具一键合成思路,多级别道具合成,采用递归方法,简单高效。
  15. 手动压缩Outlook PST和OST文件
  16. oracle时间怎么相加减,Oracle 如何对时间进行简单加减运算
  17. 夏侯王朝 - (王室族谱)
  18. 预编译及预处理的理解
  19. 面试侃集合 | LinkedBlockingQueue篇
  20. 数据库的基本操作(一)

热门文章

  1. 【脑图】软件设计原则
  2. 香港主机需要考虑的几个因素
  3. 这款APP让你免费无限畅享高质量阅读
  4. 使用 Gitlab 搭建 Docker 私有仓库
  5. JAVA毕设项目汽车售后服务管理系统(java+VUE+Mybatis+Maven+Mysql)
  6. 程序员的《致女儿书》
  7. 大数据多元化教学评价_多元化
  8. 使用jieba、pyhanlp工具实现关键字词句的提取
  9. 关于js实现分页效果的简单代码
  10. C语言的万能“三板斧”