【问题标题】:sqlcmd truncates long line query. How to run query with line length more than 5000?sqlcmd 截断长行查询。如何运行行长超过 5000 的查询?
【发布时间】:2013-11-04 13:47:57
【问题描述】:

我有包含大量列的数据表。 当我在管理工作室编辑数据表时,我可以生成更改脚本。 但是当我在 sqlcmd 中运行脚本时,插入命令失败。该命令在单行中列出了所有列,行长为 5417。因此,sqlcmd 将行截断为 5000 个字符,查询失败。 如何避免 5000 个字符的限制?

重现问题的步骤: 1)运行sqlcmd; 2)粘贴以下行:

INSERT INTO Tmp_Table1 (ExampleColumnNo1, ExampleColumnNo2, ExampleColumnNo3, ExampleColumnNo4, ExampleColumnNo5, ExampleColumnNo6, ExampleColumnNo7, ExampleColumnNo8, ExampleColumnNo9, ExampleColumnNo10, ExampleColumnNo11, ExampleColumnNo12, ExampleColumnNo13, ExampleColumnNo14, ExampleColumnNo15, ExampleColumnNo16, ExampleColumnNo17, ExampleColumnNo18, ExampleColumnNo19, ExampleColumnNo20, ExampleColumnNo21, ExampleColumnNo22, ExampleColumnNo23, ExampleColumnNo24, ExampleColumnNo25, ExampleColumnNo26, ExampleColumnNo27, ExampleColumnNo28, ExampleColumnNo29, ExampleColumnNo30, ExampleColumnNo31, ExampleColumnNo32, ExampleColumnNo33, ExampleColumnNo34, ExampleColumnNo35, ExampleColumnNo36, ExampleColumnNo37, ExampleColumnNo38, ExampleColumnNo39, ExampleColumnNo40, ExampleColumnNo41, ExampleColumnNo42, ExampleColumnNo43, ExampleColumnNo44, ExampleColumnNo45, ExampleColumnNo46, ExampleColumnNo47, ExampleColumnNo48, ExampleColumnNo49, ExampleColumnNo50, ExampleColumnNo51, ExampleColumnNo52, ExampleColumnNo53, ExampleColumnNo54, ExampleColumnNo55, ExampleColumnNo56, ExampleColumnNo57, ExampleColumnNo58, ExampleColumnNo59, ExampleColumnNo60, ExampleColumnNo61, ExampleColumnNo62, ExampleColumnNo63, ExampleColumnNo64, ExampleColumnNo65, ExampleColumnNo66, ExampleColumnNo67, ExampleColumnNo68, ExampleColumnNo69, ExampleColumnNo70, ExampleColumnNo71, ExampleColumnNo72, ExampleColumnNo73, ExampleColumnNo74, ExampleColumnNo75, ExampleColumnNo76, ExampleColumnNo77, ExampleColumnNo78, ExampleColumnNo79, ExampleColumnNo80, ExampleColumnNo81, ExampleColumnNo82, ExampleColumnNo83, ExampleColumnNo84, ExampleColumnNo85, ExampleColumnNo86, ExampleColumnNo87, ExampleColumnNo88, ExampleColumnNo89, ExampleColumnNo90, ExampleColumnNo91, ExampleColumnNo92, ExampleColumnNo93, ExampleColumnNo94, ExampleColumnNo95, ExampleColumnNo96, ExampleColumnNo97, ExampleColumnNo98, ExampleColumnNo99, ExampleColumnNo100, ExampleColumnNo101, ExampleColumnNo102, ExampleColumnNo103, ExampleColumnNo104, ExampleColumnNo105, ExampleColumnNo106, ExampleColumnNo107, ExampleColumnNo108, ExampleColumnNo109, ExampleColumnNo110, ExampleColumnNo111, ExampleColumnNo112, ExampleColumnNo113, ExampleColumnNo114, ExampleColumnNo115, ExampleColumnNo116, ExampleColumnNo117, ExampleColumnNo118, ExampleColumnNo119, ExampleColumnNo120, ExampleColumnNo121, ExampleColumnNo122, ExampleColumnNo123, ExampleColumnNo124, ExampleColumnNo125, ExampleColumnNo126, ExampleColumnNo127, ExampleColumnNo128, ExampleColumnNo129, ExampleColumnNo130, ExampleColumnNo131, ExampleColumnNo132, ExampleColumnNo133, ExampleColumnNo134, ExampleColumnNo135, ExampleColumnNo136, ExampleColumnNo137, ExampleColumnNo138, ExampleColumnNo139, ExampleColumnNo140, ExampleColumnNo141, ExampleColumnNo142, ExampleColumnNo143, ExampleColumnNo144, ExampleColumnNo145, ExampleColumnNo146, ExampleColumnNo147, ExampleColumnNo148, ExampleColumnNo149, ExampleColumnNo150, ExampleColumnNo151, ExampleColumnNo152, ExampleColumnNo153, ExampleColumnNo154, ExampleColumnNo155, ExampleColumnNo156, ExampleColumnNo157, ExampleColumnNo158, ExampleColumnNo159, ExampleColumnNo160, ExampleColumnNo161, ExampleColumnNo162, ExampleColumnNo163, ExampleColumnNo164, ExampleColumnNo165, ExampleColumnNo166, ExampleColumnNo167, ExampleColumnNo168, ExampleColumnNo169, ExampleColumnNo170, ExampleColumnNo171, ExampleColumnNo172, ExampleColumnNo173, ExampleColumnNo174, ExampleColumnNo175, ExampleColumnNo176, ExampleColumnNo177, ExampleColumnNo178, ExampleColumnNo179, ExampleColumnNo180, ExampleColumnNo181, ExampleColumnNo182, ExampleColumnNo183, ExampleColumnNo184, ExampleColumnNo185, ExampleColumnNo186, ExampleColumnNo187, ExampleColumnNo188, ExampleColumnNo189, ExampleColumnNo190, ExampleColumnNo191, ExampleColumnNo192, ExampleColumnNo193, ExampleColumnNo194, ExampleColumnNo195, ExampleColumnNo196, ExampleColumnNo197, ExampleColumnNo198, ExampleColumnNo199, ExampleColumnNo200, ExampleColumnNo201, ExampleColumnNo202, ExampleColumnNo203, ExampleColumnNo204, ExampleColumnNo205, ExampleColumnNo206, ExampleColumnNo207, ExampleColumnNo208, ExampleColumnNo209, ExampleColumnNo210, ExampleColumnNo211, ExampleColumnNo212, ExampleColumnNo213, ExampleColumnNo214, ExampleColumnNo215, ExampleColumnNo216, ExampleColumnNo217, ExampleColumnNo218, ExampleColumnNo219, ExampleColumnNo220, ExampleColumnNo221, ExampleColumnNo222, ExampleColumnNo223, ExampleColumnNo224, ExampleColumnNo225, ExampleColumnNo226, ExampleColumnNo227, ExampleColumnNo228, ExampleColumnNo229, ExampleColumnNo230, ExampleColumnNo231, ExampleColumnNo232, ExampleColumnNo233, ExampleColumnNo234, ExampleColumnNo235, ExampleColumnNo236, ExampleColumnNo237, ExampleColumnNo238, ExampleColumnNo239, ExampleColumnNo240, ExampleColumnNo241, ExampleColumnNo242, ExampleColumnNo243, ExampleColumnNo244, ExampleColumnNo245, ExampleColumnNo246, ExampleColumnNo247, ExampleColumnNo248, ExampleColumnNo249, ExampleColumnNo250, ExampleColumnNo251, ExampleColumnNo252, ExampleColumnNo253, ExampleColumnNo254, ExampleColumnNo255, ExampleColumnNo256, ExampleColumnNo257, ExampleColumnNo258, ExampleColumnNo259, ExampleColumnNo260, ExampleColumnNo261, ExampleColumnNo262, ExampleColumnNo263, ExampleColumnNo264, ExampleColumnNo265, ExampleColumnNo266, ExampleColumnNo267, ExampleColumnNo268, ExampleColumnNo269, ExampleColumnNo270, ExampleColumnNo271, ExampleColumnNo272, ExampleColumnNo273, ExampleColumnNo274, ExampleColumnNo275, ExampleColumnNo276, ExampleColumnNo277, ExampleColumnNo278, ExampleColumnNo279, ExampleColumnNo280, ExampleColumnNo281, ExampleColumnNo282, ExampleColumnNo283, ExampleColumnNo284, ExampleColumnNo285, ExampleColumnNo286, ExampleColumnNo287, ExampleColumnNo288, ExampleColumnNo289, ExampleColumnNo290, ExampleColumnNo291, ExampleColumnNo292, ExampleColumnNo293, ExampleColumnNo294, ExampleColumnNo295, ExampleColumnNo296, ExampleColumnNo297, ExampleColumnNo298, ExampleColumnNo299, ExampleColumnNo300)
SELECT ExampleColumnNo1, ExampleColumnNo2, ExampleColumnNo3, ExampleColumnNo4, ExampleColumnNo5, ExampleColumnNo6, ExampleColumnNo7, ExampleColumnNo8, ExampleColumnNo9, ExampleColumnNo10, ExampleColumnNo11, ExampleColumnNo12, ExampleColumnNo13, ExampleColumnNo14, ExampleColumnNo15, ExampleColumnNo16, ExampleColumnNo17, ExampleColumnNo18, ExampleColumnNo19, ExampleColumnNo20, ExampleColumnNo21, ExampleColumnNo22, ExampleColumnNo23, ExampleColumnNo24, ExampleColumnNo25, ExampleColumnNo26, ExampleColumnNo27, ExampleColumnNo28, ExampleColumnNo29, ExampleColumnNo30, ExampleColumnNo31, ExampleColumnNo32, ExampleColumnNo33, ExampleColumnNo34, ExampleColumnNo35, ExampleColumnNo36, ExampleColumnNo37, ExampleColumnNo38, ExampleColumnNo39, ExampleColumnNo40, ExampleColumnNo41, ExampleColumnNo42, ExampleColumnNo43, ExampleColumnNo44, ExampleColumnNo45, ExampleColumnNo46, ExampleColumnNo47, ExampleColumnNo48, ExampleColumnNo49, ExampleColumnNo50, ExampleColumnNo51, ExampleColumnNo52, ExampleColumnNo53, ExampleColumnNo54, ExampleColumnNo55, ExampleColumnNo56, ExampleColumnNo57, ExampleColumnNo58, ExampleColumnNo59, ExampleColumnNo60, ExampleColumnNo61, ExampleColumnNo62, ExampleColumnNo63, ExampleColumnNo64, ExampleColumnNo65, ExampleColumnNo66, ExampleColumnNo67, ExampleColumnNo68, ExampleColumnNo69, ExampleColumnNo70, ExampleColumnNo71, ExampleColumnNo72, ExampleColumnNo73, ExampleColumnNo74, ExampleColumnNo75, ExampleColumnNo76, ExampleColumnNo77, ExampleColumnNo78, ExampleColumnNo79, ExampleColumnNo80, ExampleColumnNo81, ExampleColumnNo82, ExampleColumnNo83, ExampleColumnNo84, ExampleColumnNo85, ExampleColumnNo86, ExampleColumnNo87, ExampleColumnNo88, ExampleColumnNo89, ExampleColumnNo90, ExampleColumnNo91, ExampleColumnNo92, ExampleColumnNo93, ExampleColumnNo94, ExampleColumnNo95, ExampleColumnNo96, ExampleColumnNo97, ExampleColumnNo98, ExampleColumnNo99, ExampleColumnNo100, ExampleColumnNo101, ExampleColumnNo102, ExampleColumnNo103, ExampleColumnNo104, ExampleColumnNo105, ExampleColumnNo106, ExampleColumnNo107, ExampleColumnNo108, ExampleColumnNo109, ExampleColumnNo110, ExampleColumnNo111, ExampleColumnNo112, ExampleColumnNo113, ExampleColumnNo114, ExampleColumnNo115, ExampleColumnNo116, ExampleColumnNo117, ExampleColumnNo118, ExampleColumnNo119, ExampleColumnNo120, ExampleColumnNo121, ExampleColumnNo122, ExampleColumnNo123, ExampleColumnNo124, ExampleColumnNo125, ExampleColumnNo126, ExampleColumnNo127, ExampleColumnNo128, ExampleColumnNo129, ExampleColumnNo130, ExampleColumnNo131, ExampleColumnNo132, ExampleColumnNo133, ExampleColumnNo134, ExampleColumnNo135, ExampleColumnNo136, ExampleColumnNo137, ExampleColumnNo138, ExampleColumnNo139, ExampleColumnNo140, ExampleColumnNo141, ExampleColumnNo142, ExampleColumnNo143, ExampleColumnNo144, ExampleColumnNo145, ExampleColumnNo146, ExampleColumnNo147, ExampleColumnNo148, ExampleColumnNo149, ExampleColumnNo150, ExampleColumnNo151, ExampleColumnNo152, ExampleColumnNo153, ExampleColumnNo154, ExampleColumnNo155, ExampleColumnNo156, ExampleColumnNo157, ExampleColumnNo158, ExampleColumnNo159, ExampleColumnNo160, ExampleColumnNo161, ExampleColumnNo162, ExampleColumnNo163, ExampleColumnNo164, ExampleColumnNo165, ExampleColumnNo166, ExampleColumnNo167, ExampleColumnNo168, ExampleColumnNo169, ExampleColumnNo170, ExampleColumnNo171, ExampleColumnNo172, ExampleColumnNo173, ExampleColumnNo174, ExampleColumnNo175, ExampleColumnNo176, ExampleColumnNo177, ExampleColumnNo178, ExampleColumnNo179, ExampleColumnNo180, ExampleColumnNo181, ExampleColumnNo182, ExampleColumnNo183, ExampleColumnNo184, ExampleColumnNo185, ExampleColumnNo186, ExampleColumnNo187, ExampleColumnNo188, ExampleColumnNo189, ExampleColumnNo190, ExampleColumnNo191, ExampleColumnNo192, ExampleColumnNo193, ExampleColumnNo194, ExampleColumnNo195, ExampleColumnNo196, ExampleColumnNo197, ExampleColumnNo198, ExampleColumnNo199, ExampleColumnNo200, ExampleColumnNo201, ExampleColumnNo202, ExampleColumnNo203, ExampleColumnNo204, ExampleColumnNo205, ExampleColumnNo206, ExampleColumnNo207, ExampleColumnNo208, ExampleColumnNo209, ExampleColumnNo210, ExampleColumnNo211, ExampleColumnNo212, ExampleColumnNo213, ExampleColumnNo214, ExampleColumnNo215, ExampleColumnNo216, ExampleColumnNo217, ExampleColumnNo218, ExampleColumnNo219, ExampleColumnNo220, ExampleColumnNo221, ExampleColumnNo222, ExampleColumnNo223, ExampleColumnNo224, ExampleColumnNo225, ExampleColumnNo226, ExampleColumnNo227, ExampleColumnNo228, ExampleColumnNo229, ExampleColumnNo230, ExampleColumnNo231, ExampleColumnNo232, ExampleColumnNo233, ExampleColumnNo234, ExampleColumnNo235, ExampleColumnNo236, ExampleColumnNo237, ExampleColumnNo238, ExampleColumnNo239, ExampleColumnNo240, ExampleColumnNo241, ExampleColumnNo242, ExampleColumnNo243, ExampleColumnNo244, ExampleColumnNo245, ExampleColumnNo246, ExampleColumnNo247, ExampleColumnNo248, ExampleColumnNo249, ExampleColumnNo250, ExampleColumnNo251, ExampleColumnNo252, ExampleColumnNo253, ExampleColumnNo254, ExampleColumnNo255, ExampleColumnNo256, ExampleColumnNo257, ExampleColumnNo258, ExampleColumnNo259, ExampleColumnNo260, ExampleColumnNo261, ExampleColumnNo262, ExampleColumnNo263, ExampleColumnNo264, ExampleColumnNo265, ExampleColumnNo266, ExampleColumnNo267, ExampleColumnNo268, ExampleColumnNo269, ExampleColumnNo270, ExampleColumnNo271, ExampleColumnNo272, ExampleColumnNo273, ExampleColumnNo274, ExampleColumnNo275, ExampleColumnNo276, ExampleColumnNo277, ExampleColumnNo278, ExampleColumnNo279, ExampleColumnNo280, ExampleColumnNo281, ExampleColumnNo282, ExampleColumnNo283, ExampleColumnNo284, ExampleColumnNo285, ExampleColumnNo286, ExampleColumnNo287, ExampleColumnNo288, ExampleColumnNo289, ExampleColumnNo290, ExampleColumnNo291, ExampleColumnNo292, ExampleColumnNo293, ExampleColumnNo294, ExampleColumnNo295, ExampleColumnNo296, ExampleColumnNo297, ExampleColumnNo298, ExampleColumnNo299, ExampleColumnNo300 FROM dbo.dbc_Table1

【问题讨论】:

    标签: sql-server sqlcmd


    【解决方案1】:

    我通过将查询移动到文件中并为工具提供-i filename.sql 参数来完成这项工作。不理想,但有效。

    【讨论】:

      【解决方案2】:
      1. 我会首先尝试编辑 SQL 脚本来简单地添加一个返回 在“VALUES”关键字之前(或之后)。你实际上可以把任何 不同行上的 INSERT 语句部分:

        INSERT INTO  
        TableName (Column1,  
        Column2)  
        VALUES (  
        N'some text',  
        55 )  
        
      2. 或者,如果 SQLCMD 不关心换行符而是它关心 关于正在执行的实际 SQL 语句,然后假设您是 插入所有可插入的列(意思是:没有 IDENTITY 或 您通常不会插入的 TIMESTAMP/ROWVERSION 字段 IDENTITY 并且不能插入到 TIMESTAMP/ROWVERSION 中)并且 VALUES 子句中的值与 SQL Server 的顺序相同 是否列出了它们(我认为如果 SSMS 生成 INSERT 语句),然后您可以删除字段列表 来自 INSERT 语句:

        INSERT INTO TableName VALUES (N'some text', 55)  
        

        这种语法通常不是首选,因为表中的任何更改 架构(即添加/删除列)会破坏 INSERT 语句,但是 对于一次性脚本来说很好。

      3. 如果这没有帮助,您通常可以将一个字符串“继续”到下一个 通过在您希望行尾放置反斜杠“\”来行 并确保从第一行开始继续下一行 字符位置。例如:

        DECLARE @InsertTest TABLE (TextCol NVARCHAR(50), IntCol INT)
        
        INSERT INTO @InsertTest (TextCol, IntCol) VALUES (N'This is a looooooooooo\  
        ooooooooong string', 55)  
        
        SELECT * FROM @InsertTest
        

      【讨论】:

      • 感谢您的回复!我会添加第 4 种解决方案,这在我的情况下是最简单的: 4. 只需将长线拆分为较小的线。但我不想修改自动生成的脚本,并寻找强制 sqlcmd 接受超过 5000 个字符的行的解决方案。
      • @RomanO,我认为您对#4 的建议与我的#1 相同。我用你的 2 条长线测试了 ed,限制似乎是 4998 个字符,但建议 #1 确实有效。它似乎也是一个内部 SQLCMD 限制,我没有看到任何解决方法。我也不认为您需要担心从 SSMS 生成的脚本。有时它们需要更新。此外,让 SSMS 生成具有这么多字段的 INSERT 语句的语法是有意义的,但我不会习惯使用 SSMS 来执行 DML 语句; SSMS 并不是一个脚本工具。
      • 您可以推荐什么工具来生成 DML 语句?
      • SQLCMD 行大小限制可能没有真正的修复方法。它似乎是一个内部且不可配置的限制(我什至检查了可能的注册表设置)。因此,如果生成的脚本产生的行数超过 4998 个字符,我看不到任何方法可以编辑它们。这就是关于这个特定问题的所有内容。现在,如何最好地编写 DML 和 DDL 更改脚本是另一个问题。而且我同意“-b”标志是必要的:)。
      • 对于 DML 和 DDL 更改的脚本,您可以查看 www.ssmstoolspack.com 和 www.red-gate.com/ 中的“sql-compare”。并且可能还有其他选择。我编写和销售的一个包 (www.sqlsharp.com) 也可以以编程方式生成 DML 语句,但不是基于已更改的内容。使用 Designer 生成脚本不是这样做的首选方法;它生成的 SQL 并不总是理想的甚至是正确的(SQL 作业有时会出现小错误)。我手工编写脚本,如果我需要 SSMS 来生成某些东西,我只会将其用作起点,并始终将其编辑为可重新运行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多