如何一步将多个访问数据集导入SAS

时间:2014-10-27 18:13:22

标签: sas

我有一个巨大的mdb文件,其中包含我想要导入SAS库的多个数据集。但我有两个问题: 许多数据集的名称都有一个空格。 2.数据集的名称是西班牙语/法语

SAS有没有办法用下划线代替空间" _"并在没有宏的情况下一步将数据集导入新库?如果没有,宏很好,但我仍然需要处理数据集名称中的空格。

非常感谢!!

1 个答案:

答案 0 :(得分: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中,前者也在数据步骤中)。
  3. 这样的东西
    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进行宏循环。