【问题标题】:Add GO separator for insert statements in long script为长脚本中的插入语句添加 GO 分隔符
【发布时间】:2017-12-02 03:50:08
【问题描述】:

我有一张有几千行的表。为简单起见,我假设它只有一列。我需要生成插入语句,以便可以在其他地方运行。

我使用这个查询:

select 
    'insert into #ids values (' + cast(ID as varchar) + ')' as SqlStr
from MySourceTable

这会生成插入语句,但是当我运行它时,我得到一个错误,不能一次运行超过 1000 行。

现在我尝试在每 1000 行添加 GO,但我不想手动执行此操作。

如何更改我的查询以在每 1000 行之后添加 GO?

【问题讨论】:

  • 旁白:您可以生成插入多行的insert 语句,例如insert into #Ids values ( 1 ), ( 2 ), ( 4 ), ( 8 );,并限制每次插入的行数。

标签: sql-server tsql sql-server-2014


【解决方案1】:

您可以使用以下查询在每 1000 行之后添加 GO

;with ct as (
    select 'insert into #ids values (' + cast(ID as varchar) + ')' as SqlStr
        , row_number() over (order by LoanNum) as RN
    from MySourceTable
)
select iif(RN % 1000 = 0, SqlStr + char(10) + 'go' + char(10), SqlStr)
from ct

这只是在生成的语句中添加一个换行符。

注意,需要将结果切换为TEXT才能得到正确的输出

【讨论】:

  • 这对我有帮助。谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-14
  • 2016-12-30
  • 1970-01-01
相关资源
最近更新 更多