1

親プロシージャから宛先テーブルと列のリストを取得し、宛先テーブルをロードするストアド プロシージャがあります。すべてがproc自体で行われます。proc の読み込み部分を SSIS パッケージに変換するにはどうすればよいですか。これは、挿入を行う proc の部分です。


  SET @sql_query = 'TRUNCATE TABLE [snaps].' + QUOTENAME(@table_dst)
  EXEC (@sql_query)

  --Build the query to load from SQL Server source.
  IF @src_type = 'sql_server'
    SET @sql_query = 'INSERT INTO [snaps].' + QUOTENAME(@table_dst) + ' (' + @columns_dst_real + ') '
                     + 'SELECT ' + @columns_dst_converted + ' '
                       + 'FROM ' +
                           + '(' +
                           + 'SELECT [' + REPLACE(REPLACE(@columns_src, '''', ''''''), ',', '],[') + '] '
                             + 'FROM ' + ISNULL(QUOTENAME(NULLIF(@link,'')) + '.', '') + ISNULL(QUOTENAME(NULLIF(@database,'')) + '.', '') + ISNULL(QUOTENAME(NULLIF(@schema,'')) + '.', '') + QUOTENAME(@table_src) + ' WITH (NOLOCK)'
                             + ISNULL(' WHERE ' + @where_clause, '') +
                           + ') a'

  --Build the query to load from Oracle source.
  ELSE IF @src_type = 'oracle'
    SET @sql_query = 'INSERT INTO [snaps].' + QUOTENAME(@table_dst) + ' (' + @columns_dst_real + ') '
                     + 'SELECT ' + @columns_dst_converted + ' '
                       + 'FROM OPENQUERY(' + QUOTENAME(@link) + ', '''
                         + 'SELECT ' + REPLACE(@columns_src, '''', '''''') + ' '
                           + 'FROM ' + @schema + '.' + @table_src
                           + ISNULL(' WHERE ' + REPLACE(@where_clause,'''',''''''), '') + ''')'

  --Build the query to load from a query source.
  ELSE IF @src_type = 'pass_query'
    SET @sql_query = 'INSERT INTO [snaps].' + QUOTENAME(@table_dst) + ' (' + @columns_dst_real + ') '
                     + 'SELECT ' + @columns_dst_converted + ' '
                       + 'FROM OPENQUERY(' + QUOTENAME(@link) + ', ''' + REPLACE(@query_src,'''','''''') + ''')'
4

0 に答える 0