{"id":118,"date":"2013-03-06T00:11:38","date_gmt":"2013-03-05T23:11:38","guid":{"rendered":"http:\/\/konsilium.de\/blog\/?p=118"},"modified":"2022-07-06T21:17:33","modified_gmt":"2022-07-06T19:17:33","slug":"sql-tipp-004-truncate-table","status":"publish","type":"post","link":"https:\/\/konsilium.de\/blog\/2013\/03\/06\/sql-tipp-004-truncate-table\/","title":{"rendered":"SQL Tipp #004 &#8211; Truncate Table"},"content":{"rendered":"\n<p>IBM DB2 LUW vor Version 9.7 kennt kein TRUNCATE so wie es das bei Oracle schon seit Ewigkeiten gibt. Es gibt jedoch ein Workaround, um TRUNCATE zu simulieren. Ab Version 9.7 unterst\u00fctzt DB2 Truncate auch &#8222;nativ&#8220;.<\/p>\n\n\n\n<p><strong>Workaround (1)<\/strong>: ALTER TABLE<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ALTER TABLE myTablename \n ACTIVATE NOT LOGGED INITIALLY WITH EMPTY TABLE;<\/code><\/pre>\n\n\n\n<p>Kommentar: Alle Daten der Tabelle werden gel\u00f6scht. Die Daten k\u00f6nnen nicht \u00fcber RESTORE wiederhergestellt werden. Wenn der Befehl innerhalb einer Unit-of-Work (UOW) ausgef\u00fchrt und anschlie\u00dfend f\u00fcr die UOW ein ROLLBACK ausgef\u00fchrt wird, so kann die Tabelle nicht wieder im Original wiederhergestellt werden. Au\u00dferdem werden keine DELETE trigger abgefeuert. Alle Indizes der Tabelle werden ebenfalls gel\u00f6scht.<\/p>\n\n\n\n<p><strong>Workaround (2)<\/strong>: Verwendung des IMPORT Utilities<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IMPORT FROM \/dev\/null OF DEL REPLACE INTO myTablename<\/code><\/pre>\n\n\n\n<p>Kommentar: Im Unterschied zu Workaround 1 ist \u00fcber diese Option die Tabelle komplett wiederherstellbar (recoverable). Auf Windows System muss statt \/dev\/null entweder &#8222;NUL&#8220; oder eine existierende Datei c:\\io.sys angegeben werden.<\/p>\n\n\n\n<p><strong>Workaround (3)<\/strong>: Verwendung des LOAD Utilities<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>load client from \"c:\\dummyfile.txt\" of del replace \n into myTablename NONRECOVERABLE;<\/code><\/pre>\n\n\n\n<p>Tipp: Zum leeren eines kompletten Schema, das Script dynamisch erzeugen lassen:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>select 'load client from \"c:\\dummyfile.txt\" of del replace \n into '|| rtrim(myTabname) || '.' || myTabname|| ' NONRECOVERABLE;'\nfrom \n&nbsp;syscat.tables\nwhere \n tabschema = 'mySchema' \n and myTabname like 'abc%'<\/code><\/pre>\n\n\n\n<p>getestet mit IBM DB2 LUW v9.5<\/p>\n","protected":false},"excerpt":{"rendered":"<p>IBM DB2 LUW vor Version 9.7 kennt kein TRUNCATE so wie es das bei Oracle schon seit Ewigkeiten gibt. Es gibt jedoch ein Workaround, um TRUNCATE zu simulieren. Ab Version 9.7 unterst\u00fctzt DB2 Truncate auch &#8222;nativ&#8220;. Workaround (1): ALTER TABLE Kommentar: Alle Daten der Tabelle werden gel\u00f6scht. Die Daten k\u00f6nnen nicht \u00fcber RESTORE wiederhergestellt werden.&hellip;&nbsp;<a href=\"https:\/\/konsilium.de\/blog\/2013\/03\/06\/sql-tipp-004-truncate-table\/\" class=\"\" rel=\"bookmark\">Weiterlesen &raquo;<span class=\"screen-reader-text\">SQL Tipp #004 &#8211; Truncate Table<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":2336,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[9],"tags":[42,41,77],"_links":{"self":[{"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/posts\/118"}],"collection":[{"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/comments?post=118"}],"version-history":[{"count":5,"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/posts\/118\/revisions"}],"predecessor-version":[{"id":2612,"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/posts\/118\/revisions\/2612"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/media\/2336"}],"wp:attachment":[{"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/media?parent=118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/categories?post=118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/tags?post=118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}