libname オプションを使用してLOGDB
、ログ ファイルを作成するデータベースを SAS に指示できます。デフォルトでは、それらは作成中のテーブルと同じデータベースに作成されます (名前付きのターゲット テーブルに加えて、発見した 3 文字のサフィックスとして名前が付けられます)。コメントで提供された情報を使用して、これを試してください。
/* Delete any exisiting log files for table TPT_LD_TEST */
libname TPTLOAD TERADATA
SERVER=TDServ DATABASE=TPTLOAD
USER=tduser PASSWORD=tdpasswd1
;
proc delete data=TPTLOAD.TPT_LD_TEST_ET;
run;
proc delete data=TPTLOAD.TPT_LD_TEST_UV;
run;
proc delete data=TPTLOAD.TPT_LD_TEST_RS;
run;
libname TPTLOAD clear;
/* Define connection to target database */
LIBNAME TDSERV TERADATA
SERVER=TDServ
USER=tduser PASSWORD=tdpasswd1
LOGDB=TPTLOAD;
/* Truncate target table if necessary */
proc sql noprint;
delete from TDSERV.TPT_LD_TEST;
quit;
proc append base=TDSERV.TPT_LD_TEST(fastload=yes tpt=yes)
data=work.FastLoad;
run;
ターゲット テーブルの既存の行を削除するコードを追加しました ( の要件FASTLOAD
)。
ターゲット データベースに対する権限がある場合はDROP TABLE
、CREATE TABLE
構造を保証し、テーブル インデックスに明示的に名前を付けることができるように、テーブルを削除して再作成する方が安全な場合があります。
/* Delete target table if it exists */
proc delete data=TDSERV.TPT_LD_TEST;
run;
data TDSERV.TPT_LD_TEST
(fastload=yes tpt=yes
dbcreate_table_opts='primary index(index_column_name)'
)
set work.FastLoad;
run;
どちらの場合も、ソース データセットから重複するレコードを必ず削除してください。それらはエラー ファイル (および他の制約に違反するレコード) に書き込まれます。
PROC DELETE
対象のテーブルが存在しなくてもエラーにならない便利なデバイスです。