代码之家  ›  专栏  ›  技术社区  ›  John K

有没有一种方法可以在MS SQL 2000中编写表数据的脚本(临时表也是如此)?

  •  1
  • John K  · 技术社区  · 16 年前

    给定一个表或一个临时表,我想运行一个过程,该过程将输出一个SQL脚本(即一组插入语句),该脚本将填充表。这在MS SQL Server 2000中是可能的吗?

    3 回复  |  直到 6 年前
        1
  •  1
  •   Vijesh VP    16 年前

    有人试过了 here . 请看一下。

        2
  •  1
  •   ctrlShiftBryan    16 年前

    您可以使用光标创建一个脚本来执行此操作。我昨天刚做了一个。你可以从中得到这个主意。

    DECLARE MY_CURSOR Cursor 
    
    FOR
    Select Year, HolidayId, Date, EffBegDate, isnull(EffEndDate,'') AS EffEndDate, ChangedUser From HolidayDate
    
    Open My_Cursor 
    
    DECLARE @Year varchar(50), @HolidayId varchar(50), @Date varchar(50), @EffBegDate varchar(50), @EffEndDate varchar(50), @ChangedUser varchar(50)
    
    Fetch NEXT FROM MY_Cursor INTO @Year, @HolidayId, @Date, @EffBegDate, @EffEndDate, @ChangedUser
    While (@@FETCH_STATUS <> -1)
    BEGIN
    IF (@@FETCH_STATUS <> -2)
    
    print 'INSERT INTO [Employee3].[dbo].[HolidayDate]([Year],[HolidayId],[Date],[EffBegDate],[EffEndDate],[ChangedUser])'
    print 'VALUES ('''+@Year+''','''+@HolidayId+''','''+@Date+''','''+@EffBegDate+''','''+@EffEndDate+''','''+@ChangedUser+''')'
    
    FETCH NEXT FROM MY_Cursor INTO @Year, @HolidayId, @Date, @EffBegDate, @EffEndDate, @ChangedUser
    END
    CLOSE MY_CURSOR
    DEALLOCATE MY_CURSOR
    GO
    
        3
  •  1
  •   Robert Rossney    16 年前

    一种简单的方法:

    SELECT 'INSERT INTO table (col1, col2, col3) VALUES ('
        '''' + col1 + ''', '
        '''' + col2 + ''', '
        '''' + col3 + ''')'
    FROM table
    

    更复杂的方法是编写一个通过检查表的模式来构建insert语句的过程,但在实践中我从未发现真正需要这样做。