{"id":416,"date":"2016-11-01T06:10:59","date_gmt":"2016-11-01T06:10:59","guid":{"rendered":"http:\/\/waynenguyen.org\/dev\/?p=416"},"modified":"2016-11-01T06:10:59","modified_gmt":"2016-11-01T06:10:59","slug":"tips-to-generate-a-large-sql-server-table-for-testing","status":"publish","type":"post","link":"https:\/\/bruceng.com\/dev\/?p=416","title":{"rendered":"Tips to generate a large SQL Server table for testing"},"content":{"rendered":"<p>To generate a large table with millions of records, it&#8217;s possible to use the following script:<\/p>\n<p><span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">declare<\/span><span style=\"font-family: Consolas; font-size: small;\"> @RecordsNum <\/span><span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">int<\/span> <span style=\"color: #808080; font-family: Consolas; font-size: small;\">=<\/span><span style=\"font-family: Consolas; font-size: small;\"> 10000000<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">-(<\/span><span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">select<\/span> <span style=\"color: #ff00ff; font-family: Consolas; font-size: small;\">count<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">(*)<\/span> <span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">from<\/span><span style=\"font-family: Consolas; font-size: small;\"> Person<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">)<\/span><\/p>\n<p><span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">declare<\/span><span style=\"font-family: Consolas; font-size: small;\"> @Count <\/span><span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">int<\/span> <span style=\"color: #808080; font-family: Consolas; font-size: small;\">=<\/span><span style=\"font-family: Consolas; font-size: small;\"> 0<\/span><\/p>\n<p><span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">set<\/span> <span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">nocount<\/span> <span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">on<\/span><\/p>\n<p><span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">Begin<\/span> <span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">transaction<\/span><\/p>\n<p><span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">while<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">(<\/span><span style=\"font-family: Consolas; font-size: small;\">@Count <\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">&lt;<\/span><span style=\"font-family: Consolas; font-size: small;\"> @RecordsNum<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">)<\/span><\/p>\n<p>begin<\/p>\n<p><span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">insert<\/span> <span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">into<\/span><span style=\"font-family: Consolas; font-size: small;\"> MyTable<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">(<\/span><span style=\"font-family: Consolas; font-size: small;\">Name<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">,<\/span> <span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">Address<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">,<\/span><span style=\"font-family: Consolas; font-size: small;\"> Age<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">)<\/span><\/p>\n<p><span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">values<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">(<\/span><span style=\"color: #ff00ff; font-family: Consolas; font-size: small;\">substring<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">(<\/span><span style=\"color: #ff00ff; font-family: Consolas; font-size: small;\">Convert<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">(<\/span><span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">varchar<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">(<\/span><span style=\"font-family: Consolas; font-size: small;\">255<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">),<\/span> <span style=\"color: #ff00ff; font-family: Consolas; font-size: small;\">NewID<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">()),<\/span><span style=\"font-family: Consolas; font-size: small;\"> 0<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">,<\/span><span style=\"font-family: Consolas; font-size: small;\"> 30<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">),<\/span><\/p>\n<p><span style=\"color: #ff00ff; font-family: Consolas; font-size: small;\">substring<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">(<\/span><span style=\"color: #ff00ff; font-family: Consolas; font-size: small;\">Convert<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">(<\/span><span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">varchar<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">(<\/span><span style=\"font-family: Consolas; font-size: small;\">255<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">),<\/span> <span style=\"color: #ff00ff; font-family: Consolas; font-size: small;\">NewID<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">()),<\/span><span style=\"font-family: Consolas; font-size: small;\">0 <\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">,<\/span><span style=\"font-family: Consolas; font-size: small;\">30<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">),<\/span> <span style=\"color: #ff00ff; font-family: Consolas; font-size: small;\">RAND<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">(<\/span><span style=\"font-family: Consolas; font-size: small;\">100<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">)<\/span> <span style=\"color: #808080; font-family: Consolas; font-size: small;\">*<\/span><span style=\"font-family: Consolas; font-size: small;\"> 100<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">)<\/span><\/p>\n<p><span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">set<\/span><span style=\"font-family: Consolas; font-size: small;\"> @Count <\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">=<\/span><span style=\"font-family: Consolas; font-size: small;\"> @Count <\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">+<\/span><span style=\"font-family: Consolas; font-size: small;\"> 1<\/span><\/p>\n<p>End<\/p>\n<p>commit<\/p>\n<p><span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">select<\/span> <span style=\"color: #ff00ff; font-family: Consolas; font-size: small;\">count<\/span><span style=\"color: #808080; font-family: Consolas; font-size: small;\">(*)<\/span> <span style=\"color: #0000ff; font-family: Consolas; font-size: small;\">from<\/span><span style=\"font-family: Consolas; font-size: small;\"> MyTable<\/span><\/p>\n<p>Some things to do to improve performance of the script:<\/p>\n<ul>\n<li>Set NoCount to ON<\/li>\n<li>enclose the while loop in a transaction explicitly<\/li>\n<\/ul>\n<p>Ideas were found in this page: <a href=\"http:\/\/mitchelsellers.com\/blogs\/2008\/09\/12\/creating-random-sql-server-test-data.aspx\">http:\/\/mitchelsellers.com\/blogs\/2008\/09\/12\/creating-random-sql-server-test-data.aspx<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>To generate a large table with millions of records, it&#8217;s possible to use the following script: declare @RecordsNum int = 10000000-(select count(*) from Person) declare @Count int = 0 set nocount on Begin transaction while(@Count &lt; @RecordsNum) begin insert into MyTable(Name, Address, Age) values(substring(Convert(varchar(255), NewID()), 0, 30), substring(Convert(varchar(255), NewID()),0 ,30), RAND(100) * 100) set @Count &hellip; <a href=\"https:\/\/bruceng.com\/dev\/?p=416\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Tips to generate a large SQL Server table for testing&#8221;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[64,10,35],"class_list":["post-416","post","type-post","status-publish","format-standard","hentry","category-tips-and-tricks","tag-big-data","tag-sql-server","tag-testing"],"_links":{"self":[{"href":"https:\/\/bruceng.com\/dev\/index.php?rest_route=\/wp\/v2\/posts\/416","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bruceng.com\/dev\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bruceng.com\/dev\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bruceng.com\/dev\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/bruceng.com\/dev\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=416"}],"version-history":[{"count":1,"href":"https:\/\/bruceng.com\/dev\/index.php?rest_route=\/wp\/v2\/posts\/416\/revisions"}],"predecessor-version":[{"id":417,"href":"https:\/\/bruceng.com\/dev\/index.php?rest_route=\/wp\/v2\/posts\/416\/revisions\/417"}],"wp:attachment":[{"href":"https:\/\/bruceng.com\/dev\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=416"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bruceng.com\/dev\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=416"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bruceng.com\/dev\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=416"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}