我有一个包含大约10条记录的查找表,我知道我可以将结构编写为文本文件的脚本,但是如何编写数据脚本以插入命令?
答案 0 :(得分:5)
十条记录,这是紧急的吗?
只需手动输入即可。应该很容易切割粘贴。
答案 1 :(得分:2)
这很大程度上取决于您使用的工具......
答案 2 :(得分:2)
快速而肮脏的方法是将select运行到字符串中并告诉sql企业管理器为您提供文本(而不是网格)作为输出
SELECT'INSERT INTO TABLES(此处为字段)VALUES('+ field1 +','....
答案 3 :(得分:2)
做这样的事情:
select "insert into my_targ_table(my_field_1, my_field_2, ..., my_field_n) values(" || x.my_field_1_col || ", " || x.my_field_2_col || ");"
from my_source_table x
然后只需运行您生成的脚本。
答案 4 :(得分:2)
假设SQL Server ......
SQL Management Studio将生成插入脚本。右键单击数据库,然后选择“任务 - 导出数据”
答案 5 :(得分:1)
此代码适用于所有表格
DECLARE @TblName varchar(128)
DECLARE @WhereClause varchar(255)
DECLARE @cmd1 varchar(7000)
DECLARE @cmd2 varchar(7000)
SET @TblName = '<tablename>' --Name of your table
SET @WhereClause = ' ' --where clause ex columnA = 1
SET @cmd1 = 'SELECT '' INSERT INTO ' + @TblName + ' ( '
SET @cmd2 = ' + '' VALUES ( '' + '
create table #tableDef (id int identity (1,1), ColType int, ColName varchar(128))
--Fetch column names and datatypes
insert #tableDef (ColType, ColName)
select case when DATA_TYPE like '%char%' then 1
when DATA_TYPE like '%datetime%' then 2
else 0 end ,
COLUMN_NAME
from information_schema.columns
where TABLE_NAME = @TblName
order by ORDINAL_POSITION
SELECT @cmd1 = @cmd1 + ColName + ',',
@cmd2 = @cmd2
+ ' CASE WHEN ' + ColName + ' IS NULL '
+ ' THEN ''NULL'' '
+ ' ELSE '
+ case ColType
when 1 then ''''''''' + ' + ColName + ' + '''''''''
when 2 then ''''''''' + ' + 'CONVERT(VARCHAR(20),' + ColName + ')' + ' + '''''''''
else 'CONVERT(VARCHAR(20),' + ColName + ')' end
+ ' END + '','' + '
from #tableDef
order by id
select @cmd1 = left(@cmd1,len(@cmd1)-1) + ' ) '' '
select @cmd2 = left(@cmd2,len(@cmd2)-8) + '+'')'' FROM ' + @tblName + @WhereClause
select '/*' + @cmd1 + @cmd2 + '*/'
exec (@cmd1 + @cmd2)
drop table #tableDef