使用SELECT打印一堆INSERT INTO

时间:2010-04-05 18:43:01

标签: sql sql-server

我有一堆记录要移动到另一个数据库,我只想创建一堆可以复制和粘贴的插入。我以前见过有人这样做,但我无法弄清楚。我没有得到正确的逃脱。

类似这样的地方,'Code','Description'和'Absent'是我想从表中得到的列。

 SELECT 'INSERT INTO AttendanceCodes
          (Code, Description, Absent) 
         VALUES 
          (' + Code + ',' + Description  + ',' + Absent')'
  FROM AttendanceCodes 

最终结果应该是一系列具有正确值的INSERTS:

 INSERT INTO AttendanceCodes 
   (Code, Description, Absent) 
 VALUES 
   ('A','Unverified Absence','UA')

3 个答案:

答案 0 :(得分:2)

检查

SELECT 'INSERT INTO AttendanceCodes (Code, Description, Absent) VALUES (''' + Code + ''',''' + Description  + ''',''' + Absent''')' 
  FROM AttendanceCodes  

答案 1 :(得分:2)

尝试这样的事情:

 SELECT 
    'INSERT INTO AttendanceCodes (Code, Description, Absent) VALUES (' 
        + ISNULL(''''+CONVERT(varchar(8000),Code)+'''','null')
        + ',' 
        + ISNULL(''''+CONVERT(varchar(8000),Description)+'''','null')
        + ',' 
        + ISNULL(''''+CONVERT(varchar(8000),Absent)+'''','null')
        +')'
    FROM AttendanceCodes 

这将处理NULL。我不确定你的列数据类型,但是你只能连接字符串,所以我把所有内容强制为varchar(8000),你可以根据需要修改它。

答案 2 :(得分:0)

对于获取表名(以及其他一些选项)并为该表中的当前数据生成insert语句的通用存储过程,请查看此方便 link

它创建一个名为sp_generate_inserts的过程。您将此过程传递给表名,它将生成所有insert语句以重新创建数据。