SQL: удалите все данные из всех доступных таблиц

Чтобы получить матрицу, которая вам «нужна», попробуйте это:

> dat <- matrix(
   data = c(0,0,0,1, 1,0,0,0,0,0,0,0,2,0,0,2,3,1,0,0),
   nrow = 4,
   ncol = 5
 )

> dat
     [,1] [,2] [,3] [,4] [,5]
[1,]    0    1    0    2    3
[2,]    0    0    0    0    1
[3,]    0    0    0    0    0
[4,]    1    0    0    2    0

> dat[rowSums(dat) > 0, colSums(dat) > 0]
     [,1] [,2] [,3] [,4]
[1,]    0    1    2    3
[2,]    0    0    0    1
[3,]    1    0    2    0
25
задан Ali Dehghani 8 February 2016 в 08:05
поделиться

5 ответов

Сгенерируйте сценарий для усечения (= удаления всех строк из) всех таблиц:

select 'truncate table ' || table_name || ';' from user_tables

И затем выполните сценарий.

29
ответ дан 28 November 2019 в 17:51
поделиться

Клонировать схему, а затем удалить старые таблицы?

2
ответ дан BCS 28 November 2019 в 17:51
поделиться

Небольшая разница в ответе Andomar об усечении всех таблиц для конкретного пользователя, а не только таблиц текущего пользователя:

SELECT 'TRUNCATE TABLE ' || owner || '.' || table_name || ';' FROM all_tables WHERE owner = 'user/schema'

Заменить бит user/schema выше на имя пользователя / схемы (между кавычками) вас интересует.

1
ответ дан Forage 28 November 2019 в 17:51
поделиться

Чтобы решить проблему ограничений, должно работать что-то вроде этого:

BEGIN

    FOR T in (SELECT table_name FROM user_tables) LOOP
      EXECUTE IMMEDIATE 'ALTER TABLE '||T.table_name||' DISABLE ALL CONSTRAINTS';
    END LOOP;

    FOR T in (SELECT table_name FROM user_tables) LOOP
      EXECUTE IMMEDIATE 'TRUNCATE TABLE '||T.table_name;
    END LOOP;

    FOR T in (SELECT table_name FROM user_tables) LOOP
      EXECUTE IMMEDIATE 'ALTER TABLE '||T.table_name||' ENABLE ALL CONSTRAINTS';
    END LOOP;
END;
18
ответ дан 28 November 2019 в 17:51
поделиться

Потенциальный недостаток усечения состоит в том, что он может дать сбой при ограничениях ссылочной целостности. Итак, вам нужно сначала отключить ограничения внешнего ключа, затем выполнить усечение, а затем снова включить ограничения. «Плюс» клонирования схемы (exp и imp) заключается в том, что вы также можете отбросить и воссоздать табличное пространство (что вы можете сделать, если хотите освободить некоторое физическое дисковое пространство в результате удаления всех данных).

4
ответ дан 28 November 2019 в 17:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: