set rowcount 1
delete from table_name
where id = 1
Friday, April 27, 2012
Tuesday, April 24, 2012
SSIS from mysql to SQL Server, create query to handle zero datetime
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROC etl.get_create_select_query (@schema varchar(MAX), @table varchar(MAX))
AS BEGIN
DECLARE @sql VARCHAR(max)
DECLARE @max_id BIGINT
DECLARE @tbl TABLE (id BIGINT)
INSERT INTO @tbl
EXEC ('select isnull(max('+@table+'_id),0) from '+@schema+'.'+@table)
SELECT @max_id = id FROM @tbl
SET @sql =
'SELECT group_concat(CONCAT(
CASE WHEN ordinal_position = 1 THEN ''SELECT '' ELSE '', '' END
, CASE Data_Type WHEN ''date'' THEN CONCAT(''CASE '',column_name,'' WHEN ''''0000-00-00'''' THEN NULL else '' ,column_name,'' END as '',column_name)
WHEN ''datetime'' THEN CONCAT(''CASE '', column_name,'' WHEN ''''0000-00-00 00:00:00'''' THEN NULL ELSE '', column_name,'' END as '',column_name)
WHEN ''time'' THEN CONCAT(''CAST('',column_name,'' AS CHAR(8) ) as '',column_name)
ELSE column_name END
, CASE WHEN Ordinal_Position <> MaxOrd THEN '''' ELSE CONCAT('' FROM '+@schema+'.'', c.table_name, '' where '+@table+'_id > '+CAST(@max_id AS VARCHAR(MAX))+''') END
) SEPARATOR '' '') select_query
from information_schema.columns as c
JOIN (
select table_name
, MAX(ordinal_position) as MaxOrd
from information_schema.columns
WHERE Table_Schema = '''+@schema+'''
and table_name = '''+@table+'''
GROUP BY Table_Name
) as t1
ON c.Table_Name = t1.Table_Name
where table_schema = '''+@schema+'''
order by c.table_name, ordinal_position'
SELECT @sql
END
Subscribe to:
Posts (Atom)