Как сбросить все таблицы в db2 - PullRequest
2 голосов
/ 24 ноября 2011

Я хочу удалить все таблицы в базе данных db2 с помощью ключей foregin, без удаления и повторного создания.

Ответы [ 3 ]

5 голосов
/ 11 сентября 2015

Если вы также хотите удалить все представления, индексы, внешние ключи и т. Д.:

select 'drop index "' || TRIM(INDSCHEMA) || '"."' || TRIM(INDNAME) || '";'
  from SYSCAT.INDEXES
  where UNIQUERULE = 'D'
  and INDSCHEMA = (select current schema from SYSIBM.SYSDUMMY1);

select 'alter table "' || TRIM(TABSCHEMA) || '"."' || TRIM(TABNAME) || '" drop foreign key "' || TRIM(CONSTNAME) || '";'
  from SYSCAT.TABCONST
  where TYPE = 'F'
  and TABSCHEMA = (select current schema from SYSIBM.SYSDUMMY1)

select 'alter table "' || TRIM(TABSCHEMA) || '"."' || TRIM(TABNAME) || '" drop unique "' || TRIM(INDNAME) || '";'
  from SYSCAT.INDEXES
  where UNIQUERULE = 'U'
  and INDSCHEMA = (select current schema from SYSIBM.SYSDUMMY1);

select 'alter table "' || TRIM(TABSCHEMA) || '"."' || TRIM(TABNAME) || '" drop primary key;'
  from SYSCAT.INDEXES
  where UNIQUERULE = 'P'
  and INDSCHEMA = (select current schema from SYSIBM.SYSDUMMY1);

select 'drop table "' || TRIM(TABSCHEMA) || '"."' || TRIM(TABNAME) || '";'
  from SYSCAT.TABLES
  where TYPE = 'T'
  and TABSCHEMA = (select current schema from SYSIBM.SYSDUMMY1);

select 'drop view "' || TRIM(TABSCHEMA) || '"."' || TRIM(TABNAME) || '";'
  from SYSCAT.TABLES
  where TYPE = 'V'
  and TABSCHEMA = (select current schema from SYSIBM.SYSDUMMY1);
3 голосов
/ 24 ноября 2011

Если вы работаете в среде Linux или Unix.

#!/bin/ksh

## load profile of your instance owner

db2 "connect to <db_name">
db2 -x "select tabschema,tabname from syscat.tables where type='T' and tabschema not like 'SYS%' with ur"|while read a b

do
   db2 "load from /dev/null of del replace into $a.$b nonrecoverable"
done

return 0

Этот скрипт удаляет данные в таблицы.

1 голос
/ 29 октября 2012
db2 "Select 'DROP TABLE ', tabname, ';' from syscat.tables where owner='DBUSER'" >> filename

Удалите самую первую и последнюю строки файла и запустите его, используя,

db2 -tvf filename.

Таким образом, мы также можем сохранить журнал удаленных таблиц.

PS: Убедитесь, что в файле присутствуют только те таблицы, которые вам нужны.Не по ошибке, отбросьте некоторые системные таблицы.

...