2009-10-26 52 views
1

我有一個包含約10條記錄的查找表,我知道我可以將結構腳本編寫爲文本文件,但是如何將數據腳本編寫爲插入命令?如何編寫我的表以生成INSERT INTO命令?

+2

您正在使用什麼數據庫管理系統? – 2009-10-26 16:33:28

+1

一些示例數據和關於該數據應該發生什麼的詳細描述將爲您提供有用的答案。 – dnagirl 2009-10-26 16:33:43

+0

可能的重複[導出數據在SQL Server中作爲INSERT INTO](http://stackoverflow.com/questions/1515969/exporting-data-in-sql-server-as-insert-into) – Flexo 2011-12-31 04:03:17

回答

2

假設SQL Server ...

SQL Management Studio將生成一個插入腳本。用鼠標右鍵單擊您的數據庫,然後選擇任務 - 導出數據

+0

請注意,這是從版本2008開始支持的 – Madhivanan 2011-06-20 08:03:05

2

這取決於你所使用的工具相當多...

2

的快速和骯髒的方法是運行一個選擇爲一個字符串,並告訴SQL企業管理器給你的文字(不是網格)作爲輸出

SELECT 'INSERT INTO表(此字段)VALUES(' +字段1 + '' ....

5

十的記錄,它的急嗎?

只需進行手動輸入。應該很易於切割 - 粘貼。

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 

然後只需運行你生成的腳本。

+0

我有同樣的想法,只有28秒後。 – recursive 2009-10-26 16:35:47

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