2014-10-27 62 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進行宏循環。

相關問題