2014-10-27 34 views
1

我有一个包含多个想要导入SAS库的数据集的巨大mdb文件。但我有两个问题: 1.许多数据集名称中有一个空格。 2.数据集的名称是西班牙文/法文如何在一步中将多个访问数据集导入SAS

有没有一种方法可以用下划线“_”替换空格,并在没有宏的情况下一步导入数据集到一个新库?如果不是的话,宏是好的,但我仍然需要照顾数据集名称的空间。

非常感谢!

回答

2

假设成员名称的长度为< = 32个字符,您应该可以执行此操作(这里的accdb是无论您的访问表的libname是什么)。

data want; 
    set accdb.'Your Table Name'n; 
run; 

还要确保有OPTIONS VALIDMEMNAME=EXTEND;集,如果它是不是已经。

西班牙语/法语不应该是一个问题,特别是如果你在一个Unicode的环境中运行,但可以肯定,你可以做的是:

  1. 定义LIBNAME
  2. 查询sashelp.vtabledictionary.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进行宏循环。