Я просто хочу отбросить всю таблицу, начинающуюся с «T%».Падение нескольких таблиц в Netezza
ДБ - Netezza.
Кто-нибудь знает, что такое sql?
С уважением,
Я просто хочу отбросить всю таблицу, начинающуюся с «T%».Падение нескольких таблиц в Netezza
ДБ - Netezza.
Кто-нибудь знает, что такое sql?
С уважением,
С видом каталога и execute immediate
это довольно просто, чтобы написать это в nzplsql. Будьте осторожны, но call drop_like('%')
очень быстро уничтожит базу данных.
create or replace procedure drop_like(varchar(128))
returns boolean
language nzplsql
as
begin_proc
declare
obj record;
expr alias for $1;
begin
for obj in select * from (
select 'TABLE' kind, tablename name from _v_table where tablename like upper(expr)
union all
select 'VIEW' kind, viewname name from _v_view where viewname like upper(expr)
union all
select 'SYNONYM' kind, synonym_name name from _v_synonym where synonym_name like upper(expr)
union all
select 'PROCEDURE' kind, proceduresignature name from _v_procedure where "PROCEDURE" like upper(expr)
) x
loop
execute immediate 'DROP '||obj.kind||' '||obj.name;
end loop;
end;
end_proc;
Вы можете создать скрипт и выполнить его. что-то вроде этого ...
DECLARE @SQL nvarchar(max)
SELECT @SQL = STUFF((SELECT CHAR(10)+ 'DROP TABLE ' + quotename(TABLE_SCHEMA) + '.' + quotename(TABLE_NAME)
+ CHAR(10) + 'GO '
FROM INFORMATION_SCHEMA.TABLES WHERE Table_Name LIKE 'T%'
FOR XML PATH('')),1,1,'')
PRINT @SQL
Результат
DROP TABLE [dbo].[tTest2]
GO
DROP TABLE [dbo].[TEMPDOCS]
GO
DROP TABLE [dbo].[team]
GO
DROP TABLE [dbo].[tbInflowMaster]
GO
DROP TABLE [dbo].[TABLE_Name1]
GO
DROP TABLE [dbo].[Test_Table1]
GO
DROP TABLE [dbo].[tbl]
GO
DROP TABLE [dbo].[T]
GO
Вы можете найти таблицы с определенным именем в Netezza, используя этот запрос.
select *
from _v_table a
where lower(tablename) like 't%'
@ M.Ali правильно, что вам нужно обернуть результаты в сценарии, если вы хотите автоматизировать сбросив таблицы. Ниже приведен VBScript, который выполнит задачу.
SQL = "select tablename from _v_table a where lower(table_name) like 't%'"
Set conn = CreateObject("ADODB.Connection")
conn.Open "NETEZZA_DSN"
Set rs = conn.execute(SQL)
Do while not rs.eof
tblnm = rs.fields("tablename")
DROP_TABLE_SQL = "drop table " & tblnm
wscript.echo "Dropping table: " & tblnm
conn.execute DROP_TABLE_SQL
rs.movenext()
Loop
conn.close
wscript.echo "Process Complete"
Выполните ниже SQL:
SELECT 'DROP TABLE '||TABLENAME||';' FROM _V_TABLE WHERE TABLENAME LIKE 'T%'
Пожалуйста, убедитесь, что правильно база данных выбрана перед выполнением выше запроса.
Этот запрос возвращает результаты, как:
DROP TABLE TABLENAME1;
DROP TABLE TABLENAME2;
.
.
DROP TABLE TABLENAMEn;
Теперь, просто скопировать полученный результат SQL в редакторе SQL и удалить все таблицы в один проход.
Это неправильное –
Эй, это для netezza и отлично работает. Сначала прочитайте полный ответ, прежде чем помечать неправильные. – SreedeepS