IBMDB2のテーブルを切り捨てるための構文を教えてもらえますか。
次のコマンドを実行しています:truncate table tableName immediate;
エラーはDB2です
SQLCODE = -104、SQLSTATE = 42601、SQLERRMC = table; truncate; JOIN、DRIVER = 3.50.152メッセージ:「truncate」の後に予期しないトークン「table」が見つかりました。予想されるトークンには、「JOIN」.. SQLCODE = -104、SQLSTATE = 42601、DRIVER = 3.50.152が含まれる場合があります。
構文は、IBMのリファレンスドキュメントで指定されているものと一致します: http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=/com.ibm.db29.doc。 sqlref/db2z_sql_truncate.htm
切り捨て に関するすばらしい記事があります。これがDB2のものの要点です。
ほぼ標準に準拠しています。(バージョン9.7以降)DB2では、IMMEDIATEキーワードを通常のTRUNCATE TABLEステートメントに追加する必要があります(例:
TRUNCATE TABLE someschema.sometable IMMEDIATE
TRUNCATE TABLEは、トランザクションの最初のステートメントである必要があります。 TRUNCATE TABLEで始まるトランザクションには他のステートメントが含まれる場合がありますが、トランザクションがロールバックされた場合、TRUNCATETABLE操作は元に戻されません。 DB2のTRUNCATETABLE操作には、いくつかのオプションの引数があります。これについて詳しくは、ドキュメントを参照してください。特に、REUSE STORAGE引数は、アドホックDBAタスクにとって重要な場合があります。 DB2バージョン<9.7では、IMPORTステートメントを悪用する可能性があります。残念ながら、これを機能させるには、コマンドが実行されるオペレーティングシステムを知る必要があります。
UNIXライクなシステムの場合:IMPORT FROM/dev/null OF DEL REPLACE INTO tablename Windowsの場合:IMPORT FROM NUL OF DEL REPLACE INTO tablenameIMPORTはすべてのコンテキストで悪用できるわけではありません。例えば、動的SQL(Java/.NET/PHP/...- db2コマンド行プロセッサーを使用しない)を使用する場合、ADMIN_CMDの呼び出しでIMPORTコマンドをラップする必要があります。例:
CALL ADMIN_CMD('IMPORT FROM /dev/null OF DEL REPLACE INTO tablename')
IMPORTは、他の操作を含むトランザクションで許可されているようですが、即時のCOMMIT操作を意味します。
ALTER TABLEコマンドを悪用してテーブルをすばやく空にすることもできますが、より多くの特権が必要になり、ロールフォワードリカバリで問題が発生する可能性があります。
これはWebサイトから取得されました: http://troels.arvin.dk/db/rdbms/#bulk-truncate_table-db2
DB2 for AS400を使用している場合、IMMEDIATE TRUNCATETABLEは機能しません。同等の回避策は、次のいずれかです。
またはより高速(最も効率的な方法)
Java構文:
CommandCall command = new CommandCall(new AS400(AS400SystemName, AS400JavaUser, AS400JavaPwd));
try {
command.run("CLRPFM FILE(as400SchemaName/" + tableName + ")");
どのバージョンのDB2を使用していますか? truncate table
コマンドはDB2v9で導入されました(少なくともメインフレームでは、リンクに基づいて質問しているように見えます)。
この記事 はDB2 v8でそれを行うためのストアード・プロシージャーの方法を提供しますが、delete from
オプションに頼らなければならない場合があります。
使用'table_name'を即時に切り捨てます
これは、9.7バージョンからDB2でTRUNCATEに使用できる正確なリファレンスドキュメントです。
DB2 on z/OS V10テーブルの1つを空にします:テーブルを切り捨てます。コミット作業が続きます。例tempを切り捨てます。他の誰かのテーブル:owner.tableを切り捨てる例:student.workを切り捨てる;リンクされたDB2ではこれを試していません。 node2.student.workを切り捨てるかどうかはわかりません。いいね。
テーブルのリストを自動的に作成するためのSQL。テーブル名と作成者の列幅が長すぎるために使用される部分文字列(substr)。あなたの価値観は異なるかもしれません。
select 'truncate table '||substr(creator,1,9)||'.'||substr(name,1,20)
from sysibm.systables
where creator = 'Student';