我有一个巨大的mdb文件,其中包含我想要导入SAS库的多个数据集。但我有两个问题: 许多数据集的名称都有一个空格。 2.数据集的名称是西班牙语/法语
SAS有没有办法用下划线代替空间" _"并在没有宏的情况下一步将数据集导入新库?如果没有,宏很好,但我仍然需要处理数据集名称中的空格。
非常感谢!!
答案 0 :(得分:2)
假设成员名称的长度是< = 32个字符,您应该能够这样做(这里accdb
是您访问表的libname)。
data want;
set accdb.'Your Table Name'n;
run;
如果尚未设置OPTIONS VALIDMEMNAME=EXTEND;
,请务必设置。
西班牙语/法语不应成为问题,特别是如果您在Unicode环境中运行,但要确保您可以做的是:
sashelp.vtable
或dictionary.tables
(后者在PROC SQL中,前者也在数据步骤中)。 像
这样的东西data accdb_tables;
set sashelp.vtable;
where libname='ACCDB'; *whatever your access database libname is, all uppercase usually;
run;
这可以让你看到SAS认为名称是什么,所以如果它确实翻译了NLS字符,你可以看到它是如何做到的。如果这不起作用,那么我提交一个新问题的具体内容(确切的表名是什么,当你尝试使用它时会得到什么错误)。但是,只要它引用了n之后的n,它通常应该有用。
就导入多个表格而言,如果您使用libname
访问权限,您可以将所有表格提供给SAS,就好像它们是SAS数据集一样(我假设您已经在上述答案中这样做了) )。
libname accdb 'c:\pathtodata\myfile.mdb';
如果安装了正确的驱动程序,也可以使用OLEDB或ODBC。
然后我会直接从libname中使用它们,这是你第一次需要它们;在使用之前,您可能不需要将它们复制到SAS数据集。如果你愿意,你必须对libname进行宏循环。