开发者社区> 问答> 正文

使用虚拟数据填充SQL表的最快方法

使用虚拟数据填充SQL表的最快方法

展开
收起
贺贺_ 2019-12-02 13:10:30 612 0
1 条回答
写回答
取消 提交回答
  • 你只需要在INSERT之后,填写1000次,如下所示:

    INSERT INTO dbo.Cusomers(Id, FirstName, LastName) VALUES(1, 'Mohamed', 'Mousavi') 
    
    GO 1000
    
    

    它将创建一个包含 1000 行的相同行的表。

    另一种解决方案是,您可以使用一些数据填充表的开头行,然后通过反复重复开始行来填充表的下一行,这意味着您自己填充表:

    INSERT INTO dbo.Customers 
    
    SELECT * FROM dbo.Customers 
    
    GO 10
    
    

    在这种情况下,一个或多个列是标识(如果是自动增量,意味着它们接受唯一值),你只是不将其放在查询中,例如 Id 在 dbo 中。Customer是身份,查询如下所示:

    INSERT INTO dbo.Customers 
    
    SELECT FirstName, Last Name FROM dbo.Customers 
    
    GO 10
    
    

    而不是:

    INSERT INTO dbo.Customers
    
    SELECT Id, FirstName, Last Name FROM dbo.Customers 
    
    GO 10
    
    

    否则,您会遇到以下错误: An explicit value for the identity column in table 'dbo.Customers' can only be specified when a column list is used and IDENTITY_INSERT is ON.

    注意:这是一种算术级数,所以它会持续一点,不要在 前面使用大数字。GO 如果希望有一个表,填充得更详细一点,那么这次可以通过执行一个简单的查询并按照以下步骤实现相同的方法:

    1.选择一个行数量非常多的表,比如dbo. Customer

    2.右键单击它并选择Script Table as > Create To > New Query Editor Window

    3.将新表命名,像dbo.CustomersTest,现在您可以执行查询,以具有与 dbo. Customer 结构类似的新表

    注意:请记住,如果已提交标识,请更改它Identity Specification to No,因为您应该通过原始表的数据重复填充新表。

    4.运行以下查询,它将运行 1000 次,您可以将其改的更多或者更少,但请注意,它可能基于计算机硬件持续最小值:

    INSERT INTO [dbo].[CustomersTest] 
    
    SELECT * FROM [dbo].[Customers] 
    
    GO 1000
    
    

    5.过了一会儿,你有一个表,其中有虚拟行!

    2019-12-02 13:15:03
    赞同 展开评论 打赏
问答分类:
SQL
问答地址:
问答排行榜
最热
最新

相关电子书

更多
SQL Server在电子商务中的应用与实践 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载