まえに、以下の記事を書きました。
外部ファイルをいっぺんに読み込んで連結する。
今回は別のやり方(INFILEステートメントの FILEVAR=オプション を使った方法)を紹介します。
まず以下のCSVファイルがあったとします。
C:\sample\TEST1.csv
001,a,11 002,b,22 |
C:\sample\TEST2.csv
003,c,33 004,d,44 |
手順1
まずは読み込みたいテキストファイルのフルパスをデータセットに格納します。
data DT1 ; length VAR $500. ; VAR="C:\sample\test1.csv"; output; VAR="C:\sample\test2.csv"; output; run;
|
手順2
上記のテキストファイルのフルパス情報を使って、テキストファイルを読み込んでいきます。
data OUT1; *--- テキストファイルのフルパスが格納されたデータセットをSET ---; set DT1; *--- フルパスが格納された変数VARを filevar= に指定 ---; *--- end=で各テキストファイルの終端を検知する一時変数を作成 ---; infile dummy filevar=VAR end=EOF dsd truncover; *--- テキストファイルの終端を検知するまでループ ---; length A B $10. C 8.; do while (not EOF); input A B C; output; end; run;
|
📝注意点
上の例で「do while (not 一時変数名)」の部分を「do until (一時変数名)」と書くと正しく読み込めない場合があります
(読み込む外部ファイルのいずれかが空だと、そこでデータステップが終了してしまい、以降の外部ファイルが読み込まれないという落とし穴がある)
📝その他ポイント
📝その他ポイント
ちなみに、この記事の先頭にも貼ったリンク
の方法だと、読み込むファイルのヘッダー部分を「firstobsオプション」でスキップさせたい場合に、うまく動かないのですが、今回の記事の方法だとうまくスキップ出来ます。
0 件のコメント:
コメントを投稿