Sql server E+],“结束”,“结束” 当数据类型为“nchar”时,则当['+列名称+']为空时,则为“空”或“其他”+替换(['+列名称+'],“结束”)+“结束” 当数据类型为“datetime”时,['+列名称+']为空时,则为“空”或“其他”+转换(NVAR
E+],“结束”,“结束” 当数据类型为“nchar”时,则当['+列名称+']为空时,则为“空”或“其他”+替换(['+列名称+'],“结束”)+“结束” 当数据类型为“datetime”时,['+列名称+']为空时,则为“空”或“其他”+转换(NVARCHAR(最大值),['+列名称+'],121)+“结束” 当数据类型为“datetime2”时,['+列名称+']为空时,则为“空”或“其他”+转换(NVARCHAR(MAX),['+列名称+'],121)+“结束” 当数据类型为'geography'和列名称为'Shape'时,则为'ST'u GeomFromText'('POINT('+column'u name+'.Lat'+column'u name+'.Long')” 当数据类型为“地理”和列名称为“形状”时,则转换(NVARCHAR(MAX),['+列名称+)+“” 当数据类型为“位”时,则为“转换”(NVARCHAR(MAX),['+列名称+)+“转换” 当数据类型为“xml”时,['+列名称+']为空时,则为“空”或“其他”+替换(转换(NVARCHAR(MAX),['+列名称+']),“结束” 当数据类型为“图像”时,['+列名称+']为空时,则为“空”或“其他”+转换(NVARCHAR(MAX),转换(VARBINARY(MAX),['+列名称+']),1)+“结束” 当数据类型为“varbinary”时,['+column\u name+']为NULL时,则为“NULL”或“ELSE”+转换(NVARCHAR(MAX),['+column\u name+'],1)+“END” 当数据类型为“二进制”时,['+列名称+']为空时,则为“空”或“其他”+转换(NVARCHAR(MAX),['+列名称+'],1)+“结束” 当数据类型为“时间”时,['+列名称+']为空时,则为“空”或“其他”+转换(NVARCHAR(MAX),['+列名称+'])+“结束” ELSE'案例当['+column_name+']为空时,则“NULL”ELSE转换(NVARCHAR(MAX),['+column_name+'])结束 + '+'', ' 从信息_schema.c列 在co.name=c.COLUMN\u name和object\u name(co.id)=so.name和object\u name(co.id)=c.TABLE\u name和co.id=so.object\u id和c.TABLE\u SCHEMA=SCHEMA\u name(so.SCHEMA\u id)上连接syscolumns co 其中表_name=so.name 按序号位置排序 对于XML路径(“”))val(列表) 其中so.type='U'Sql server E+],“结束”,“结束” 当数据类型为“nchar”时,则当['+列名称+']为空时,则为“空”或“其他”+替换(['+列名称+'],“结束”)+“结束” 当数据类型为“datetime”时,['+列名称+']为空时,则为“空”或“其他”+转换(NVAR,sql-server,ssms,Sql Server,Ssms,E+],“结束”,“结束” 当数据类型为“nchar”时,则当['+列名称+']为空时,则为“空”或“其他”+替换(['+列名称+'],“结束”)+“结束” 当数据类型为“datetime”时,['+列名称+']为空时,则为“空”或“其他”+转换(NVARCHAR(最大值),['+列名称+'],121)+“结束” 当数据类型为“datetime2”时,['+列名称+']为空时,则为“空”或“其他”+转换(NVARCHAR(MAX),['+列名称+'],121)+“结束” 当数据类型为'geogr
以上已回答。抱歉发得太早了。不知道出了什么问题!美好的正如gbn所建议的那样,我过去常常依赖Tools Pack addin来完成这类任务。很高兴知道我不再需要它了。这是一个隐藏的选择。应该更明显…:)谢谢你,托马斯。太完美了!2012版不再免费。这是一个非常有用的脚本。是否有一种简单的方法可以更改日期时间格式,从而以标准格式(如“2014-03-31 23:55:41”)导出日期?目前,我得到的日期时间类似于“2010年2月10日下午2:44”。看起来您必须取消“从中选择”部分,并去掉方括号,以使存储过程正常工作。没有计算列检查。如果您的表中有任何计算列,就会出现错误非常感谢Neeraj,我的小错误“INformation_schema”应该是“INformation_schema”,而“DECLARE Condition Varchar(MAX)”应该是“DECLARE Condition Varchar(MAX)”可能是
Exec [dbo].[INS] 'Dbo.test where 1=1'
Exec [dbo].[INS] 'Dbo.test where name =''neeraj''' * for string
/*
Authore : neeraj prasad sharma (please dont remove this :))
Example (1) Exec [dbo].[INS] 'Dbo.test where 1=1'
(2) Exec [dbo].[INS] 'Dbo.test where name =''neeraj''' * for string
here Dbo is schema and test is tablename and 1=1 is condition
*/
CREATE procedure [dbo].[INS]
(
@Query Varchar(MAX)
)
AS
SET nocount ON
DECLARE @WithStrINdex as INT
DECLARE @WhereStrINdex as INT
DECLARE @INDExtouse as INT
DECLARE @SchemaAndTAble VArchar(270)
DECLARE @Schema_name varchar(30)
DECLARE @Table_name varchar(240)
DECLARE @Condition Varchar(MAX)
SET @WithStrINdex=0
SELECT @WithStrINdex=CHARINDEX('With',@Query )
, @WhereStrINdex=CHARINDEX('WHERE', @Query)
IF(@WithStrINdex!=0)
SELECT @INDExtouse=@WithStrINdex
ELSE
SELECT @INDExtouse=@WhereStrINdex
SELECT @SchemaAndTAble=Left (@Query,@INDExtouse-1)
SELECT @SchemaAndTAble=Ltrim (Rtrim( @SchemaAndTAble))
SELECT @Schema_name= Left (@SchemaAndTAble, CharIndex('.',@SchemaAndTAble )-1)
, @Table_name = SUBSTRING( @SchemaAndTAble , CharIndex('.',@SchemaAndTAble )+1,LEN(@SchemaAndTAble) )
, @CONDITION=SUBSTRING(@Query,@WhereStrINdex+6,LEN(@Query))--27+6
DECLARE @COLUMNS table (Row_number SmallINT , Column_Name VArchar(Max) )
DECLARE @CONDITIONS as varchar(MAX)
DECLARE @Total_Rows as SmallINT
DECLARE @Counter as SmallINT
DECLARE @ComaCol as varchar(max)
SELECT @ComaCol=''
SET @Counter=1
SET @CONDITIONS=''
INSERT INTO @COLUMNS
SELECT Row_number()Over (Order by ORDINAL_POSITION ) [Count], Column_Name
FROM INformation_schema.columns
WHERE Table_schema=@Schema_name AND table_name=@Table_name
SELECT @Total_Rows= Count(1)
FROM @COLUMNS
SELECT @Table_name= '['+@Table_name+']'
SELECT @Schema_name='['+@Schema_name+']'
While (@Counter<=@Total_Rows )
begin
--PRINT @Counter
SELECT @ComaCol= @ComaCol+'['+Column_Name+'],'
FROM @COLUMNS
WHERE [Row_number]=@Counter
SELECT @CONDITIONS=@CONDITIONS+ ' + Case When ['+Column_Name+'] is null then ''Null'' Else '''''''' + Replace( Convert(varchar(Max),['+Column_Name+'] ) ,'''''''','''' ) +'''''''' end+'+''','''
FROM @COLUMNS
WHERE [Row_number]=@Counter
SET @Counter=@Counter+1
End
SELECT @CONDITIONS=Right(@CONDITIONS,LEN(@CONDITIONS)-2)
SELECT @CONDITIONS=LEFT(@CONDITIONS,LEN(@CONDITIONS)-4)
SELECT @ComaCol= substring (@ComaCol,0, len(@ComaCol) )
SELECT @CONDITIONS= '''INSERT INTO '+@Schema_name+'.'+@Table_name+ '('+@ComaCol+')' +' Values( '+'''' + '+'+@CONDITIONS
SELECT @CONDITIONS=@CONDITIONS+'+'+ ''')'''
SELECT @CONDITIONS= 'Select '+@CONDITIONS +'FRom ' +@Schema_name+'.'+@Table_name+' With(NOLOCK) ' + ' Where '+@Condition
print(@CONDITIONS)
Exec(@CONDITIONS)
select distinct 'SELECT ''INSERT INTO ' + schema_name(ta.schema_id) + '.' + so.name + ' (' + substring(o.list, 1, len(o.list)-1) + ') VALUES ('
+ substring(val.list, 1, len(val.list)-1) + ');'' FROM ' + schema_name(ta.schema_id) + '.' + so.name + ';'
from sys.objects so
join sys.tables ta on ta.object_id=so.object_id
cross apply
(SELECT ' ' +column_name + ', '
from information_schema.columns c
join syscolumns co on co.name=c.COLUMN_NAME and object_name(co.id)=so.name and OBJECT_NAME(co.id)=c.TABLE_NAME and co.id=so.object_id and c.TABLE_SCHEMA=SCHEMA_NAME(so.schema_id)
where table_name = so.name
order by ordinal_position
FOR XML PATH('')) o (list)
cross apply
(SELECT '''+' +case
when data_type = 'uniqueidentifier' THEN 'CASE WHEN [' + column_name+'] IS NULL THEN ''NULL'' ELSE ''''''''+CONVERT(NVARCHAR(MAX),[' + COLUMN_NAME + '])+'''''''' END '
WHEN data_type = 'timestamp' then '''''''''+CONVERT(NVARCHAR(MAX),CONVERT(BINARY(8),[' + COLUMN_NAME + ']),1)+'''''''''
WHEN data_type = 'nvarchar' then 'CASE WHEN [' + column_name+'] IS NULL THEN ''NULL'' ELSE ''''''''+REPLACE([' + COLUMN_NAME + '],'''''''','''''''''''')+'''''''' END'
WHEN data_type = 'varchar' then 'CASE WHEN [' + column_name+'] IS NULL THEN ''NULL'' ELSE ''''''''+REPLACE([' + COLUMN_NAME + '],'''''''','''''''''''')+'''''''' END'
WHEN data_type = 'char' then 'CASE WHEN [' + column_name+'] IS NULL THEN ''NULL'' ELSE ''''''''+REPLACE([' + COLUMN_NAME + '],'''''''','''''''''''')+'''''''' END'
WHEN data_type = 'nchar' then 'CASE WHEN [' + column_name+'] IS NULL THEN ''NULL'' ELSE ''''''''+REPLACE([' + COLUMN_NAME + '],'''''''','''''''''''')+'''''''' END'
when DATA_TYPE='datetime' then 'CASE WHEN [' + column_name+'] IS NULL THEN ''NULL'' ELSE ''''''''+CONVERT(NVARCHAR(MAX),[' + COLUMN_NAME + '],121)+'''''''' END '
when DATA_TYPE='datetime2' then 'CASE WHEN [' + column_name+'] IS NULL THEN ''NULL'' ELSE ''''''''+CONVERT(NVARCHAR(MAX),[' + COLUMN_NAME + '],121)+'''''''' END '
when DATA_TYPE='geography' and column_name<>'Shape' then 'ST_GeomFromText(''POINT('+column_name+'.Lat '+column_name+'.Long)'') '
when DATA_TYPE='geography' and column_name='Shape' then '''''''''+CONVERT(NVARCHAR(MAX),[' + COLUMN_NAME + '])+'''''''''
when DATA_TYPE='bit' then '''''''''+CONVERT(NVARCHAR(MAX),[' + COLUMN_NAME + '])+'''''''''
when DATA_TYPE='xml' then 'CASE WHEN [' + column_name+'] IS NULL THEN ''NULL'' ELSE ''''''''+REPLACE(CONVERT(NVARCHAR(MAX),[' + COLUMN_NAME + ']),'''''''','''''''''''')+'''''''' END '
WHEN DATA_TYPE='image' then 'CASE WHEN [' + column_name+'] IS NULL THEN ''NULL'' ELSE ''''''''+CONVERT(NVARCHAR(MAX),CONVERT(VARBINARY(MAX),[' + COLUMN_NAME + ']),1)+'''''''' END '
WHEN DATA_TYPE='varbinary' then 'CASE WHEN [' + column_name+'] IS NULL THEN ''NULL'' ELSE ''''''''+CONVERT(NVARCHAR(MAX),[' + COLUMN_NAME + '],1)+'''''''' END '
WHEN DATA_TYPE='binary' then 'CASE WHEN [' + column_name+'] IS NULL THEN ''NULL'' ELSE ''''''''+CONVERT(NVARCHAR(MAX),[' + COLUMN_NAME + '],1)+'''''''' END '
when DATA_TYPE='time' then 'CASE WHEN [' + column_name+'] IS NULL THEN ''NULL'' ELSE ''''''''+CONVERT(NVARCHAR(MAX),[' + COLUMN_NAME + '])+'''''''' END '
ELSE 'CASE WHEN [' + column_name+'] IS NULL THEN ''NULL'' ELSE CONVERT(NVARCHAR(MAX),['+column_name+']) END' end
+ '+'', '
from information_schema.columns c
join syscolumns co on co.name=c.COLUMN_NAME and object_name(co.id)=so.name and OBJECT_NAME(co.id)=c.TABLE_NAME and co.id=so.object_id and c.TABLE_SCHEMA=SCHEMA_NAME(so.schema_id)
where table_name = so.name
order by ordinal_position
FOR XML PATH('')) val (list)
where so.type = 'U'