SASのPROC IMPORT/EXPORTについて、DBMSによってオプションが使えたり使えなかったり、
案の定英語ページのみで膨大なため、自分用忘備録として日本語でまとめます。
未確認の部分もあるので、誤りがありましたらご指摘お願いいたします。
その他にも情報がある方はコメントお願いいたします。
DBMSの主な違い
参考ページのUsing the DBMS= Identifiers for Microsoft Excel FilesのOverviewの日本語訳です。
Microsoft ExcelファイルのDBMS=識別子は、以下の通りです。
-
DBMS=EXCEL
を使用すると、Microsoft Excel 97、2000、2002、2003、2007、2010、およびそれ以降のワークブックの読み取りと書き込みが可能になります。DBMS=EXCELはLIBNAMEステートメントを透過的に使用します。.xls .xlsb .xlsm .xlsx ファイルをサポートします。.xlsb ファイルと Linux について詳しくは、「Linux の .XLSB ファイル」を参照してください。 -
DBMS=XLS、DBMS=XLSX
を使用すると、.xlsまたは.xlsxファイルからデータを読み取ったり、.xlsxファイルにデータを書き込んだりすることができます。DBMS=XLSは、Excelバージョン5/95、97、2000、2002、2003をサポートしています。DBMS=XLSXは、2007、2010、およびそれ以降をサポートしています。SASでは、サポート強化のため、.xlsxファイル形式の使用を推奨しています。この方法は、Excel .xlsbファイルをサポートしません。.xlsxファイルには16,384列、1,048,576行という制限があるため、SASデータセットからデータを書き出す(エクスポートする)場合、16,384列、1,048,576行を超えるデータを書き出すことができません。そうでない場合は、エラーメッセージが表示されます。 -
DBMS=XLSXは、ダブルバイト文字セット(DBCS)をサポートしています。.xlsファイルのDBCSを取得するには、.xlsx形式で保存してください。
※DBMS=XLSXは使えるオプションが他のDBMSと比べて著しく少ないが、ダブルバイト文字が使える、OSとEXCELのbit数が違ってもPC Files Serverなしで使えるなど利点もある。(環境がないので未確認。) -
DBMS=EXCELCS
は、SAS PC Files Server(有料(SAS ACCESSに加えてさらに契約する必要あり))を経由して接続し、サーバー上のExcelワークブックを読み書きします。EXCELCS は PC Files エンジンを透過的に使用します。PC Files Serverは、SAS Viya 3.4以前には含まれていません。SAS 9 クライアントを使用して接続します。PC Files Server は Windows 上でのみ実行されます。
※Windowsが64bit、EXCELが32bitのようにbit数に違いがあるときに必要。
DBMSごとの使えるオプション
IMPORT
| IMPORT | EXCEL | EXCELCS | XLS | XLSX |
|---|---|---|---|---|
| DBDSOPTS | ○ | ○ | ||
| DBSASLABEL | ○ | ○ | ||
| ENDCOL | ○ | |||
| ENDNAMEROW | ○ | |||
| ENDROW | ○ | |||
| GETNAMES | ○ | ○ | ○ | |
| MIXED | ○ | |||
| NAMEROW | ○ | |||
| PORT | ○ | |||
| RANGE | ○ | ○ | ○ | ○ |
| SCANTEXT | ○ | ○ | ||
| SCANTIME | ○ | ○ | ||
| SERVER | ○ | |||
| SERVERPASS | ○ |
EXPORT
| EXPORT | EXCEL | EXCELCS | XLS | XLSX |
|---|---|---|---|---|
| DBDSOPTS | ○ | ○ | ||
| NEWFILE | ○ | ○ | ||
| PORT | ○ | |||
| PUTNAMES | ○ | |||
| SERVER | ○ | |||
| SERVERPASS | ○ | |||
| SERVERUSER | ○ | |||
| SERVICE | ○ | |||
| SHEET | ○ | ○ | ○ | ○ |
| VERSION | ○ |
DBMS別 読み込んだときの変数名の扱い
PROC IMPORTでGETNAMES=YESとしたとき、ヘッダがラベルとなるが、データセットが裏で持っている変数名がどのような法則でつけられるかについて。
工事中
で、DBMSは結局どれがベストなの?
OSとEXCELのbit数が違う
- PC Files Serverを導入するお金がある→EXCELCS
- お金がない→XLSX(未確認)
OSとEXCELのbit数が同じ
検討中
DBMS=EXCELが一番メジャーな気がするが、、
参考ページ