簡體   English   中英

如何編寫表腳本以生成INSERT INTO命令?

[英]How do I script my table to generate INSERT INTO commands?

我有一個包含約10條記錄的查找表,我知道可以將結構腳本化為文本文件,但是如何對數據進行腳本化以插入命令中?

十條記錄,緊急嗎?

只需手動輸入即可。 應該很容易剪切粘貼。

這很大程度上取決於您使用的工具...

快速而骯臟的方法是將select運行到字符串中,並告訴sql企業管理器為您提供文本(而不是網格)作為輸出

選擇'INSERT INTO TABLES(此處為字段)值('+ field1 +','....

做這樣的事情:

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

然后,只需運行您生成的腳本即可。

假設SQL Server ...

SQL Management Studio將生成一個插入腳本。 右鍵單擊數據庫,然后選擇“任務導出數據”

此代碼適用於所有表

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM