declare kursor cursor for
select
exec_No, insert_type, stg_table, src
from
METADATA.dbo.METADATA
order by
exec_No asc;
declare @insert_type varchar(15), @stg_table varchar(30),
@src varchar(80), @SQL varchar(254), @exec_No numeric(2),
@SQL_INSERT varchar(254);
open kursor
fetch next from kursor into @exec_No, @insert_type, @stg_table, @src;
while @@FETCH_STATUS = 0
begin
if @insert_type = 'select'
begin
-- select @SQL = 'IF OBJECT_ID('''+@stg_table+''') IS NOT NULL DROP TABLE '+@stg_table;
select @SQL = 'DROP TABLE IF EXISTS '+@stg_table;
select @SQL_INSERT = 'select * from '''+@src+''' as '+@stg_table;
exec(@SQL);
execute(@SQL_INSERT);
fetch next from kursor into @exec_No, @insert_type, @stg_table, @src;
end
if @insert_type = 'bulk'
begin
execute ('truncate table ' + @stg_table);
execute('BULK INSERT '+@stg_table+'
FROM ''' + @src + '''
WITH
(
FIELDTERMINATOR = '',''
)')
end
fetch next from kursor into @exec_No, @insert_type, @stg_table, @src;
end
close kursor;
deallocate kursor;
и я получаю ошибки
Сообщение 102, уровень 15, состояние 1, строка 1
Неверный синтаксис рядом с SOURCE.dbo.SRC_KLIENT.
Сообщение 102, Уровень 15, Состояние 1, Строка 1
Неверный синтаксис рядом с 'SOURCE.dbo.SRC_MIEJSCOWOSC'.
Сообщение 102, Уровень 15, Состояние 1, Строка 1
Неверный синтаксис рядом с 'ИСТОЧНИК.dbo.SRC_PRACOWNIK '.
Сообщение 102, уровень 15, состояние 1, строка 1
Неверный синтаксис рядом с' SOURCE.dbo.SRC_MELDUNEK '.
Ошибки генерируютсязаявление:
select @SQL_INSERT = 'select * from '''+@src+''' as '+@stg_table;
мои вставки для метаданных:
insert into
METADATA.dbo.METADATA(exec_No,src,stg_table,temp_table, chd_table, insert_type)
values(1,'SOURCE.dbo.SRC_KLIENT', 'STAGE.dbo.STG_KLIENT', 'TEMP.dbo.TEMP_KLIENT', 'CHD.dbo.KLIENT', 'select');
insert into
METADATA.dbo.METADATA(exec_No,src,stg_table,temp_table, chd_table, insert_type)
values(15,'SOURCE.dbo.SRC_MELDUNEK', 'STAGE.dbo.STG_MELDUNEK', 'TEMP.dbo.TEMP_MELDUNEK', 'CHD.dbo.MELDUNEK', 'select');
Есть идеи, как заставить это работать?
Спасибо, ребята!