{"id":1552,"date":"2021-09-27T09:14:58","date_gmt":"2021-09-27T09:14:58","guid":{"rendered":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/?p=1552"},"modified":"2022-06-20T10:55:23","modified_gmt":"2022-06-20T10:55:23","slug":"generate-test-data-with-oracle-sql","status":"publish","type":"post","link":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/","title":{"rendered":"Generate test data with Oracle SQL"},"content":{"rendered":"\n<p>Many projects work with databases, and of course the performance of the system has to be tested. Usually, smaller amounts of data are entered by means of manual tests, but how do you get bulk data?&nbsp;<\/p>\n\n\n\n<p>The usual answer is, of course: \u201cBuy one of the tools\u201d \u2013 and usually rightly so. These tools have an (often) fairly easy-to-use UI, are quick and above all they can generate semantically meaningful data.&nbsp;&nbsp;<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-medium\"><img decoding=\"async\" src=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle-600x400.jpg\" alt=\"Colleagues working on a screen\" class=\"wp-image-2600\"\/><figcaption><em>Figure: To perform a meaningful performance test for databases, testers need to simulate the processing of both small and large amounts of data<\/em>.<\/figcaption><\/figure><\/div>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Generating data with<\/strong> SQL<\/h2>\n\n\n\n<p>However, with a little SQL you can also generate such data yourself. It gets interesting when linking multiple tables, which plays an important role in the following example.&nbsp;<\/p>\n\n\n\n<p>Scenario: Our project manages companies and their plants and for them invoice data is to be generated. There are different views and queries for this data in the project. We want to have some areas with little data (to test the functioning of the system), but also bulk data.&nbsp;<\/p>\n\n\n\n<p>First, we create the companies (here only three of them) with a single instruction. This is the first important point to achieve good performance in the generation of the data. Of course, you could write three INSERT statements one after the other or use a loop 1-3 with PL\/SQL. But after a certain amount of data, that you want to generate, it will become massively slower.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong><strong>Sub-select<\/strong><\/strong> <strong>\u201ecompany_seq\u201c: <\/strong>Creates a sequence of&nbsp;1-3&nbsp;<\/p>\n\n\n\n<p><strong>Insert Statement: <\/strong>The company will get a meaningful name (high number = more data).<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">insert into company (name) \n  select\n    'company '||company_seq.company_number as name\n  from (\n    select rownum as company_number \n    from dual \n    connect by level&lt;=3\n  ) company_seq\n;<\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Next, we would like to assign the plants to the companies. Remember: We want some areas with little data, others with a lot of data. Therefore, three plants are to be assigned to the first company, six plants to the second company, etc.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong><strong>Sub-select \u201cCompany<\/strong>\u201c:<\/strong> The ranking gives you a running number 1-N, so you can easily set the desired number of plants per company. This query produces exactly one line per company.&nbsp;<\/p>\n\n\n\n<p><strong><strong>Sub-select \u201cplant_seq<\/strong>\u201c:&nbsp;<\/strong>We need a sequence to generate a row by joining the \u201ccompany\u201d subquery and desired number of attachments. To do this, we use a generously estimated sequence. The join is limited by the previously determined number of plants per company.&nbsp;<\/p>\n\n\n\n<p><strong>Insert Statement:&nbsp;<\/strong>The plant name should indicate which company the plant belongs to.&nbsp;&nbsp;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">insert into plant (firma_id, name) \n  select \n    company.company_id,\n    'plant '||company.company_number||'.'||plant_seq.plant_number\n  from (\n    select \n      company_id, \n      dense_rank() over (order by company_id) as company_number,\n      dense_rank() over (order by company_id) * 3 as amount_plants\n    from company\n  ) company\n  join (\n    select rownum as plant_number from dual connect by level&lt;=1000\n  ) plant_seq on (plant_seq.plant_number &lt;= company.amount_plants)\n;<\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Finally, a billing per calendar month is to be generated for each company and plant.<\/p>\n\n\n\n<p>The core element for random data in Oracle is the dbms_random package. It offers several functions for generating numbers, with the default range 0-1 or with self-defined ranges. However, the decimal places of the generated numbers have to be checked by rounding up or down. There is also a generator for characters available, with some modes like Large, Small, Alphanumeric,&nbsp;\u2026&nbsp;&nbsp;<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong><strong>Column &#8220;Invoice number<\/strong>&#8220;: <\/strong>Three capital letters followed by six digits&nbsp;<\/p>\n\n\n\n<p><strong>Column &#8220;<strong>Amount<\/strong>&#8220;: <\/strong>A random value in the range \u20ac 100.900.&nbsp;&nbsp;<\/p>\n\n\n\n<p><strong>Column &#8220;Surcharges&#8221;: <\/strong>For approx. 10% of invoices a surcharge of \u20ac 50 is to be charged, this is achieved by comparing a random number in the range 0-1 to &lt; 0.10.&nbsp;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">insert into billing (company_id,plant_id,billing_month,invoice_number,amount,surcharges)\n  select \n    company.company_id,\n    plant.plant_id,\n    to_date('01.'||month||'.2021', 'dd.mm.yyyy') as billing_month,\n    dbms_random.string('U',3) || round(dbms_random.value(10000,99999), 0) as invoice_number,\n    round(100 + dbms_random.value(100,900),2) as amount,\n    case when dbms_random.value&lt;0.10 then 50 else null end as surcharges\n  from company\n  join plant \n    on plant.company_id = company.company_id\n  join (\n    select rownum as month from dual connect by level&lt;=12\n  ) month_seq on (1=1)\n  order by 1,2,3\n;<\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusion<\/strong><\/h2>\n\n\n\n<p>These data do not win a beauty prize, so it may be better to resort to the mentioned products. But in our project, this approach has helped to provide data of sufficient quality and, above all, quantity from day one. This enabled us to ensure the performance of the system right from the start. In addition, the end result is that the system can process more data with better performance than similar systems.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Source Code<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">--------------------------------------------------------------------------------------------------------------\n-- Create data model\n--------------------------------------------------------------------------------------------------------------\ndrop table billing;\ndrop table plant;\ndrop table company;\n\ncreate table company (\n  company_id number(9) generated as identity,\n  name varchar2(100) not null,\n  constraint pk_company primary key (company_id)\n);\n\ncreate table plant (\n  plant_id number(9) generated as identity,\n  company_id number(9) not null,\n  name varchar2(100) not null,\n  constraint pk_plant primary key (anlage_id),\n  constraint fk_plant_01 foreign key (company_id) references company (company_id)\n);\n\ncreate table billing (\n  billing_id number(9) generated as identity,\n  company_id number(9) not null,\n  plant_id number(9) not null,\n  billing_month date not null,\n  invoice_number varchar(30) not null,\n  amount number(18,2) not null,\n  surcharges number(18,2),\n  constraint pk_billing primary key (billing_id),\n  constraint fk_billing_01 foreign key (company_id) references company (company_id),\n  constraint fk_billing_02 foreign key (plant_id) references plant (plant_id)\n);\n\n--------------------------------------------------------------------------------------------------------------\n-- Generate data\n--------------------------------------------------------------------------------------------------------------\n\n-- Delete all data\n\ntruncate table billing;\ntruncate table plant;\ntruncate table company;\n\nwhenever sqlerror exit rollback;\n\n-- Generate Companies  (here 3)\ninsert into company (name) \n  select\n    'company '||company_seq.company_number as name\n  from (select rownum as company_number from dual connect by level&lt;=3) company_seq\n;\n \ncommit;\n\n-- Insert attachments per company. The first company will receive three plants, the next six plants, ...\ninsert into plant (company_id, name) \n  select \n    company.company_id,\n    'plant '||company.company_number||'.'||plant_seq.plant_number\n  from (\n    -- Determine the serial number for each company and the desired number of plants\n    select \n      company_id, \n      dense_rank() over (order by company_id) as company_number,\n      dense_rank() over (order by company_id) * 3 as amount_plants\n    from company\n  ) company\n  join (\n    -- A sequence of attachments by which to join the required rows per company with N attachments\n    select rownum as plant_number from dual connect by level&lt;=1000\n  ) plant_seq on (plant_seq.plant_number &lt;= company.amount_plants)\n  -- order by 1,2\n;\n \ncommit;\n\n-- Generate an invoice per calendar month for each company and plant.\n-- The invoice number is a random string with three letters and six digits.\n-- The amount is a random value in the range 100-900 euros.\n-- The surcharge of 50 euros is applied to approx. 10% of the invoices.\ninsert into billing (company_id,plant_id,billing_month,invoice_number,amount,surcharges)\n  select \n    company.company_id,\n    plant.plant_id,\n    to_date('01.'||month||'.2021', 'dd.mm.yyyy') as billing_month,\n    dbms_random.string('U',3) || round(dbms_random.value(10000,99999), 0) as invoice_number,\n    round(dbms_random.value(100,1000),2) as amount,\n    case when dbms_random.value&lt;0.10 then 50 else null end as surcharges\n  from company\n  join plant on plant.company_id = company.company_id\n  join (select rownum as month from dual connect by level&lt;=12) month_seq on (1=1)\n  -- order by 1,2,3\n;\n \ncommit;\n<\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Many projects work with databases, and of course the performance of the system has to be tested. Usually, smaller amounts of data are entered by means of manual tests, but how do you get bulk data?<\/p>\n","protected":false},"author":128,"featured_media":1555,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","footnotes":""},"categories":[13],"tags":[675,725,726,727],"topics":[],"class_list":["post-1552","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dot-net","tag-zeiss-digital-innovation","tag-bulk-data","tag-generating-data","tag-sql"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Generate test data with Oracle SQL - ZEISS Digital Innovation Blog<\/title>\n<meta name=\"description\" content=\"In databases with smaller amounts of data the performance can be tested by means of manual tests. But how do you work with bulk data?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Testdaten mit Oracle SQL erzeugen\" \/>\n<meta property=\"og:description\" content=\"Die Performance-Messung bei Datenbanken kleinerer Datenmengen ist oft durch manuelle Tests m\u00f6glich. Doch wie verh\u00e4lt es sich mit Massendaten?\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/\" \/>\n<meta property=\"og:site_name\" content=\"Digital Innovation Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-27T09:14:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-06-20T10:55:23+00:00\" \/>\n<meta name=\"author\" content=\"Christian Harla\u00df\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Testdaten mit Oracle SQL erzeugen\" \/>\n<meta name=\"twitter:description\" content=\"Die Performance-Messung bei Datenbanken kleinerer Datenmengen ist oft durch manuelle Tests m\u00f6glich. Doch wie verh\u00e4lt es sich mit Massendaten?\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Christian Harla\u00df\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/\",\"name\":\"Generate test data with Oracle SQL - ZEISS Digital Innovation Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle.jpg\",\"datePublished\":\"2021-09-27T09:14:58+00:00\",\"dateModified\":\"2022-06-20T10:55:23+00:00\",\"author\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/0fd4dedf00de94ccc1f7f77e04e4643b\"},\"description\":\"In databases with smaller amounts of data the performance can be tested by means of manual tests. But how do you work with bulk data?\",\"breadcrumb\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/#primaryimage\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle.jpg\",\"contentUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle.jpg\",\"width\":2268,\"height\":1512,\"caption\":\"Colleagues working on agile product development board with scrum or kanban framework, lean methodology, iterative or incremental organization project management strategy for startup or software design\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Generate test data with Oracle SQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#website\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/\",\"name\":\"Digital Innovation Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/0fd4dedf00de94ccc1f7f77e04e4643b\",\"name\":\"Christian Harla\u00df\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2021\/09\/harlass_christian-150x150.jpg\",\"contentUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2021\/09\/harlass_christian-150x150.jpg\",\"caption\":\"Christian Harla\u00df\"},\"description\":\"Christian Harla\u00df studied computer science at Dresden University of Technology and works as software architect and developer at ZEISS Digital Innovation. His main focus is on business applications. He is also interested in topics regarding .NET and databases.\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/author\/enchristianharlass\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Generate test data with Oracle SQL - ZEISS Digital Innovation Blog","description":"In databases with smaller amounts of data the performance can be tested by means of manual tests. But how do you work with bulk data?","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/","og_locale":"en_US","og_type":"article","og_title":"Testdaten mit Oracle SQL erzeugen","og_description":"Die Performance-Messung bei Datenbanken kleinerer Datenmengen ist oft durch manuelle Tests m\u00f6glich. Doch wie verh\u00e4lt es sich mit Massendaten?","og_url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/","og_site_name":"Digital Innovation Blog","article_published_time":"2021-09-27T09:14:58+00:00","article_modified_time":"2022-06-20T10:55:23+00:00","author":"Christian Harla\u00df","twitter_card":"summary_large_image","twitter_title":"Testdaten mit Oracle SQL erzeugen","twitter_description":"Die Performance-Messung bei Datenbanken kleinerer Datenmengen ist oft durch manuelle Tests m\u00f6glich. Doch wie verh\u00e4lt es sich mit Massendaten?","twitter_misc":{"Written by":"Christian Harla\u00df","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/","name":"Generate test data with Oracle SQL - ZEISS Digital Innovation Blog","isPartOf":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/#primaryimage"},"image":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle.jpg","datePublished":"2021-09-27T09:14:58+00:00","dateModified":"2022-06-20T10:55:23+00:00","author":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/0fd4dedf00de94ccc1f7f77e04e4643b"},"description":"In databases with smaller amounts of data the performance can be tested by means of manual tests. But how do you work with bulk data?","breadcrumb":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/#primaryimage","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle.jpg","contentUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle.jpg","width":2268,"height":1512,"caption":"Colleagues working on agile product development board with scrum or kanban framework, lean methodology, iterative or incremental organization project management strategy for startup or software design"},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/generate-test-data-with-oracle-sql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/"},{"@type":"ListItem","position":2,"name":"Generate test data with Oracle SQL"}]},{"@type":"WebSite","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#website","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/","name":"Digital Innovation Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/0fd4dedf00de94ccc1f7f77e04e4643b","name":"Christian Harla\u00df","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/#\/schema\/person\/image\/","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2021\/09\/harlass_christian-150x150.jpg","contentUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-content\/uploads\/sites\/3\/2021\/09\/harlass_christian-150x150.jpg","caption":"Christian Harla\u00df"},"description":"Christian Harla\u00df studied computer science at Dresden University of Technology and works as software architect and developer at ZEISS Digital Innovation. His main focus is on business applications. He is also interested in topics regarding .NET and databases.","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/author\/enchristianharlass\/"}]}},"author_meta":{"display_name":"Christian Harla\u00df","author_link":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/author\/enchristianharlass\/"},"featured_img":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle-600x400.jpg","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/dot-net\/\" class=\"advgb-post-tax-term\">.NET<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">.NET<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/dot-net\/\" class=\"advgb-post-tax-term\">ZEISS Digital Innovation<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/dot-net\/\" class=\"advgb-post-tax-term\">bulk data<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/dot-net\/\" class=\"advgb-post-tax-term\">generating data<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/category\/dot-net\/\" class=\"advgb-post-tax-term\">SQL<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">ZEISS Digital Innovation<\/span>","<span class=\"advgb-post-tax-term\">bulk data<\/span>","<span class=\"advgb-post-tax-term\">generating data<\/span>","<span class=\"advgb-post-tax-term\">SQL<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Posted 5 years ago","modified":"Updated 4 years ago"},"absolute_dates":{"created":"Posted on September 27, 2021","modified":"Updated on June 20, 2022"},"absolute_dates_time":{"created":"Posted on September 27, 2021 9:14 am","modified":"Updated on June 20, 2022 10:55 am"},"featured_img_caption":"","series_order":"","_links":{"self":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/posts\/1552","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/users\/128"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/comments?post=1552"}],"version-history":[{"count":8,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/posts\/1552\/revisions"}],"predecessor-version":[{"id":1806,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/posts\/1552\/revisions\/1806"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/media\/1555"}],"wp:attachment":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/media?parent=1552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/categories?post=1552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/tags?post=1552"},{"taxonomy":"topics","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/en\/wp-json\/wp\/v2\/topics?post=1552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}