D******6 发帖数: 6211 | 1 【 以下文字转载自 Statistics 讨论区 】
发信人: Doha2006 (花猫), 信区: Statistics
标 题: 请教一个SAS读中文数据库的问题
发信站: BBS 未名空间站 (Sun Feb 21 23:45:37 2010, 美东)
我用SAS读一个中文数据库,字符字段
源文件如下:
id name address
1, 张三,北京市东城区
2,李四,北京市西城区
。。。
。。。
我用的代码如下:
DATA name;
infile 'G:\name.csv' DLM = ',' DSD MISSOVER;
input id $ name $ address $;
读到SAS里的结果如下:
id name address
1 张三 北京市东
2 李四 北京市西
现在出现的问题是,如果address太长或者任何字符字段长过8个都读不进去,读到SAS
里以后,只有4个中文字符,也就是字节长8 。不是说以$这样结尾读数据都是按照有多
长读多长么?还是哪里有什么限制,我没有打开?
谢谢指点! |
A*********u 发帖数: 8976 | 2 input id $ name $ address :$200;
【 以下文字转载自 Statistics 讨论区 】
发信人: Doha2006 (花猫), 信区: Statistics
标 题: 请教一个SAS读中文数据库的问题
发信站: BBS 未名空间站 (Sun Feb 21 23:45:37 2010, 美东)
我用SAS读一个中文数据库,字符字段
源文件如下:
id name address
1, 张三,北京市东城区
2,李四,北京市西城区
。。。
。。。
我用的代码如下:
DATA name;
infile 'G:\name.csv' DLM = ',' DSD MISSOVER;
input id $ name $ address $;
读到SAS里的结果如下:
id name address
1 张三 北京市东
2 李四 北京市西
现在出现的问题是,如果address太长或者任何字符字段长过8个都读不进去,读到SAS
里以后,只有4个中文字符,也就是字节长8 。不是说以$这样结尾读数据都是按照有多
长读多长么?还是哪里有什么限制,我没有打开?
谢谢指点!
【在 D******6 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 【 以下文字转载自 Statistics 讨论区 】 : 发信人: Doha2006 (花猫), 信区: Statistics : 标 题: 请教一个SAS读中文数据库的问题 : 发信站: BBS 未名空间站 (Sun Feb 21 23:45:37 2010, 美东) : 我用SAS读一个中文数据库,字符字段 : 源文件如下: : id name address : 1, 张三,北京市东城区 : 2,李四,北京市西城区 : 。。。
|
D******6 发帖数: 6211 | 3 刚看见,谢谢意见!
这个办法我试过,不行,这样读数据打乱了安排,如果address字段中中间,把后面的
字段长度都读进去了,格式就乱了。
昨天晚上罗尼在古典版给的意见比较简洁好使,只在data proc 开始的时候设置
address的最长字段长度(不设置的话默认是8),然后读具体数据的时候还用我原来的
读取方式就可以了。
奇怪的是,我以前的读取方式,读英文字段多长的字节都没有问题,就是读中文字段,
超过8给就不读了。。。
【在 A*********u 的大作中提到】![](/moin_static193/solenoid/img/up.png) : input id $ name $ address :$200; : : 【 以下文字转载自 Statistics 讨论区 】 : 发信人: Doha2006 (花猫), 信区: Statistics : 标 题: 请教一个SAS读中文数据库的问题 : 发信站: BBS 未名空间站 (Sun Feb 21 23:45:37 2010, 美东) : 我用SAS读一个中文数据库,字符字段 : 源文件如下: : id name address : 1, 张三,北京市东城区
|
A*********u 发帖数: 8976 | 4 我那dollar sign前面有个冒号
遇到delimiter会停的,不是一定读到200 :)
刚看见,谢谢意见!
这个办法我试过,不行,这样读数据打乱了安排,如果address字段中中间,把后面的
字段长度都读进去了,格式就乱了。
昨天晚上罗尼在古典版给的意见比较简洁好使,只在data proc 开始的时候设置
address的最长字段长度(不设置的话默认是8),然后读具体数据的时候还用我原来的
读取方式就可以了。
奇怪的是,我以前的读取方式,读英文字段多长的字节都没有问题,就是读中文字段,
超过8给就不读了。。。
【在 D******6 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 刚看见,谢谢意见! : 这个办法我试过,不行,这样读数据打乱了安排,如果address字段中中间,把后面的 : 字段长度都读进去了,格式就乱了。 : 昨天晚上罗尼在古典版给的意见比较简洁好使,只在data proc 开始的时候设置 : address的最长字段长度(不设置的话默认是8),然后读具体数据的时候还用我原来的 : 读取方式就可以了。 : 奇怪的是,我以前的读取方式,读英文字段多长的字节都没有问题,就是读中文字段, : 超过8给就不读了。。。
|
D******6 发帖数: 6211 | 5 谢谢解释!
我试了,address :$200, 读出来的不行,有乱码,也有字段挪位。。。
但是,好像在200后面加一个点就可以了。
【在 A*********u 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 我那dollar sign前面有个冒号 : 遇到delimiter会停的,不是一定读到200 :) : : 刚看见,谢谢意见! : 这个办法我试过,不行,这样读数据打乱了安排,如果address字段中中间,把后面的 : 字段长度都读进去了,格式就乱了。 : 昨天晚上罗尼在古典版给的意见比较简洁好使,只在data proc 开始的时候设置 : address的最长字段长度(不设置的话默认是8),然后读具体数据的时候还用我原来的 : 读取方式就可以了。 : 奇怪的是,我以前的读取方式,读英文字段多长的字节都没有问题,就是读中文字段,
|
z**2 发帖数: 104 | |
A*********u 发帖数: 8976 | 7 sorry
there should be a point.
i made a mistake, hehe
【在 D******6 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 谢谢解释! : 我试了,address :$200, 读出来的不行,有乱码,也有字段挪位。。。 : 但是,好像在200后面加一个点就可以了。
|