0

SAS は比較的新しく、データ (パイプ区切りの .dlm) を MySQL データベースに一括読み込みしようとしています。とにかく基本を突き止めましたが、SASにデータ行の始まりと終わりを伝える方法に困惑しています。現在の構文...

proc append base=abc.metrics (bulkload=yes 
                                                            bl_delimter='|'
                                                            bl_options='errors=0' 
                                                            bl_delete_datafile=no)
data=abc_metrics_&jid;
run;

ご意見、ご指導、コメントをいただければ幸いです。

4

2 に答える 2

1

MySQL でこれを直接行うことはできないと思います: http://support.sas.com/documentation/cdl/en/acreldb/63647/HTML/default/viewer.htm#a002938849.htm http://support. sas.com/documentation/cdl/en/acreldb/63647/HTML/default/viewer.htm#a001752476.htm

ただし、ファイルを自分で書き出すことはできます。sashelp.class をデータセット、ファイル "\server\yourfile.dlm" に変更します。~ の前の最後のレコードの後、その +(-1) を削除します。

data _null_;
set sashelp.class;
file "c:\temp\test.dat" dlm='|' lrecl=32767;
put "!" @;
put name $ age height weight @;
put +(-1) "~";
run;

次に、MYSQL の一括読み込み機能 (それが何であれ) を通常どおりに呼び出すことができます。パススルー接続を使用できる場合があります。つまり、

proc sql;
connect to odbc (connection-information);
execute ("load file.dlm into table") by odbc;
quit;

(明らかに間違った SQL 構文ですが、それがコンセプトです。その " " 内のすべては、DB のインターフェイスに直接いるかのように、MySQL ボックスで MySQL コードとして直接実行されます)。

または、MySQL に Oracle の SQL*Loader のようなものがある場合は、「x」コマンドを使用して、アクセスできると仮定して、コマンド ラインからそれを呼び出すことができます。

于 2013-02-14T16:24:51.570 に答える
1

私の知る限り、SAS から MySQL に直接「バルク ロード」することはできません。SAS Access マニュアルのこのメモを参照してください。

したがって、最善の策は、区切りテキスト ファイルを作成し (おそらく をPROC EXPORT使用)、mysql ユーティリティを使用することです。これは、さまざまな解決策、特にコマンド に関するものを含む以前の SO の質問です。load data local infile

于 2013-02-14T17:05:27.123 に答える