【问题标题】:How to populate a table with 1000 rows of sample data?如何用 1000 行样本数据填充表?
【发布时间】:2019-03-18 08:46:23
【问题描述】:

如下表:

CREATE TABLE Persons (
    ID int NOT NULL,
    ModifiedDate datetime,
    FirstName varchar(50),
    LastName varchar(50),
    EMail varchar(30),
    PhoneNumber varchar(15),
    PRIMARY KEY (ID)
);

【问题讨论】:

  • 对于一千行,我将创建一个包含插入语句和一些可调整变量的循环的过程。
  • @P.Salmon 你能更具体一点吗?可以帮我办理手续吗?
  • 对于一千行(好吧,1024 行),我只会做 10 次插入。它肯定至少和写一个 sproc 一样快

标签: mysql sql populate


【解决方案1】:

一个简单的方法是使用专为此目的设计的https://www.mockaroo.com/。创建所需的列并选择 SQL 作为输出。它会让你成为一个很好的脚本。

您也可以创建 Excel 电子表格来生成 SQL 查询,但这有点费时

【讨论】:

    【解决方案2】:

    执行如下查询,会插入1000个虚拟行

    BEGIN
        DECLARE @RowCount int = 1000,
                @Index int = 1
    
        WHILE (@Index <= @RowCount)
        BEGIN
            INSERT INTO Persons (ID, ModifiedDate, FirstName, LastName, EMail, PhoneNumber)
                        VALUES (@Index, getdate(), 'FirstName' + CAST(@Index AS varchar(10)), 'LastName' + CAST(@Index AS varchar(10)), 'EMail' + CAST(@Index AS varchar(10)), CAST(@Index AS varchar(10)))
            SET @Index += 1
        END
    END
    

    【讨论】:

      【解决方案3】:

      您可以编写如下查询:

      INSERT INTO Persons(ModifiedDate, FirstName, LastName, EMail, PhoneNumber)
      SELECT
          CURRENT_TIMESTAMP - INTERVAL FLOOR(RAND()* 31536000) SECOND, -- random datetime up to -1 year
          CHAR(FLOOR(RAND() * 26)+ ASCII('A')),  -- random character between A-Z
          CHAR(FLOOR(RAND() * 26)+ ASCII('A')),
          CHAR(FLOOR(RAND() * 26)+ ASCII('a')),  -- random character between a-z
          CHAR(FLOOR(RAND() * 10)+ ASCII('0'))   -- random character between 0-9
      FROM any_table_with_1000_rows
      LIMIT 1000
      

      可以使用任何具有 1000 行的表。如果没有,您可以将具有 n 行的表与自身连接以获得 n2 行。

      【讨论】:

      • 对于 T-SQL,我不得不将随机日期时间列更改为:DATEADD(SECOND, FLOOR(RAND() * -315576000), GETDATE()), -- random datetime up to -10 years
      • TSQL 中的 @srsedate RAND() 将为一个查询中的每一行提供相同的值!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-30
      • 1970-01-01
      • 2012-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      相关资源
      最近更新 更多