我有一个包含多个想要导入SAS库的数据集的巨大mdb文件。但我有两个问题: 1.许多数据集名称中有一个空格。 2.数据集的名称是西班牙文/法文如何在一步中将多个访问数据集导入SAS
有没有一种方法可以用下划线“_”替换空格,并在没有宏的情况下一步导入数据集到一个新库?如果不是的话,宏是好的,但我仍然需要照顾数据集名称的空间。
非常感谢!
我有一个包含多个想要导入SAS库的数据集的巨大mdb文件。但我有两个问题: 1.许多数据集名称中有一个空格。 2.数据集的名称是西班牙文/法文如何在一步中将多个访问数据集导入SAS
有没有一种方法可以用下划线“_”替换空格,并在没有宏的情况下一步导入数据集到一个新库?如果不是的话,宏是好的,但我仍然需要照顾数据集名称的空间。
非常感谢!
假设成员名称的长度为< = 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后面加上引号,它通常应该可以工作。
至于导入多个表,如果使用libname
访问,你可以让所有可用的SAS表的,好像他们是SAS数据集(我假设你已经在上面的答案,这样做)。
libname accdb 'c:\pathtodata\myfile.mdb';
如果您安装了适当的驱动程序,您也可以使用OLEDB或ODBC。
然后,我会直接从libname中直接使用它们,这是第一次需要它们;在使用之前,您可能不需要将它们复制到SAS数据集。如果你想,你必须对libname进行宏循环。