{"id":2569,"date":"2021-09-27T09:14:56","date_gmt":"2021-09-27T09:14:56","guid":{"rendered":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/?p=2569"},"modified":"2022-06-16T12:50:31","modified_gmt":"2022-06-16T12:50:31","slug":"testdaten-mit-oracle-sql-erzeugen","status":"publish","type":"post","link":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/testdaten-mit-oracle-sql-erzeugen\/","title":{"rendered":"Testdaten mit Oracle SQL erzeugen"},"content":{"rendered":"\n<p>Viele Projekte arbeiten mit Datenbanken&nbsp;und&nbsp;da muss nat\u00fcrlich die Performance des Systems getestet werden.&nbsp;Meist werden kleinere&nbsp;Datenmengen durch manuelle Tests eingegeben, aber&nbsp;wie erh\u00e4lt man Massendaten?&nbsp;<\/p>\n\n\n\n<p>Die&nbsp;\u00fcbliche Antwort&nbsp;lautet&nbsp;nat\u00fcrlich&nbsp;\u201eKauf eines der&nbsp;Tools\u201c&nbsp;\u2013&nbsp;und meist zu Recht.&nbsp;Diese Tools haben eine&nbsp;(oft) recht einfach bedienbare&nbsp;UI,&nbsp;sind flott&nbsp;und vor allem&nbsp;k\u00f6nnen sie&nbsp;semantisch sinnvolle Daten generieren.&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 loading=\"lazy\" decoding=\"async\" width=\"600\" height=\"400\" src=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle-600x400.jpg\" alt=\"Zwei Personen an einem Bildschirm, arbeiten gemeinsam an einer Entwickler-Oberfl\u00e4che\" class=\"wp-image-2600\" srcset=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle-600x400.jpg 600w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle-1024x683.jpg 1024w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle-768x512.jpg 768w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle-1536x1024.jpg 1536w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle-2048x1365.jpg 2048w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle-640x427.jpg 640w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle-1200x800.jpg 1200w, https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle-1920x1280.jpg 1920w\" sizes=\"auto, (max-width: 639px) 98vw, (max-width: 1199px) 64vw, 600px\" \/><figcaption><em>Abbildung: Um einen aussagekr\u00e4ftigen Performance-Test f\u00fcr Datenbanken durchzuf\u00fchren, m\u00fcssen Testerinnen und Tester die Verarbeitung sowohl kleiner als auch gro\u00dfer Datenmengen simulieren<\/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\">Daten generieren mit SQL<\/h2>\n\n\n\n<p>Dennoch,&nbsp;mit ein wenig SQL kann man auch selbst&nbsp;derartige Daten generieren.&nbsp;Interessant wird es bei der Verkn\u00fcpfung von mehreren Tabellen, was im folgenden Beispiel&nbsp;eine wichtige Rolle spielt.&nbsp;<\/p>\n\n\n\n<p>Szenario:&nbsp;Unser Projekt verwaltet&nbsp;Firmen&nbsp;und deren Anlagen und f\u00fcr diese sollen Rechnungsdaten generiert werden. F\u00fcr diese Daten gibt es im Projekt verschiedene Ansichten und Abfragen. Wir m\u00f6chten&nbsp;einige Bereiche mit wenig Daten haben (um die Funktion des Systems zu testen), aber auch Massendaten.&nbsp;<\/p>\n\n\n\n<p>Zuerst erzeugen wir die Firmen (hier nur&nbsp;drei St\u00fcck) mit einer einzigen Anweisung.&nbsp;Das ist der erste wichtige Punkt, um eine gute Performance bei der Generierung der Daten zu erreichen. Nat\u00fcrlich k\u00f6nnte man auch&nbsp;drei&nbsp;INSERT-Statements nacheinander schreiben&nbsp;oder mit PL\/SQL einen Loop&nbsp;1..3&nbsp;verwenden. Ab einer gewissen Zahl von Daten, die man erzeugen m\u00f6chte, wird das aber&nbsp;massiv langsamer werden.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>Teilabfrage \u201efirma_seq\u201c: <\/strong>Erzeugt eine Sequenz&nbsp;von&nbsp;1..3&nbsp;<\/p>\n\n\n\n<p><strong>Insert<s>&nbsp;<\/s>Statement: <\/strong>Die Firma soll einen aussagekr\u00e4ftigen Namen erhalten (hohe Nummer = viel Daten).<\/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 firma (name) \n  select\n    'Firma '||firma_seq.firma_nummer as name\n  from (\n    select rownum as firma_nummer \n    from dual \n    connect by level&lt;=3\n  ) firma_seq\n;<\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Als n\u00e4chstes m\u00f6chten&nbsp;wir die Anlagen zu den Firmen erzeugen.&nbsp;Nicht vergessen: Wir wollen einige Bereiche&nbsp;mit wenig, andere mit viel Daten.&nbsp;Daher&nbsp;sollen zur ersten Firma drei Anlagen zugeordnet werden, zur zweiten Firma sechs Anlagen&nbsp;usw.<\/p>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>Teilabfrage \u201efirma\u201c:<\/strong> Durch das Ranking erh\u00e4lt man eine laufende Nummer&nbsp;1..N,&nbsp;damit kann man auch einfach die gew\u00fcnschte Anzahl Anlagen je Firma festlegen. Diese Abfrage produziert je Firma genau eine Zeile.&nbsp;<\/p>\n\n\n\n<p><strong>Teilabfrage \u201eanlage_seq\u201c:&nbsp;<\/strong>Wir ben\u00f6tigen eine Sequenz, um durch den&nbsp;Join&nbsp;auf die \u201efirma\u201c Teilabfrage je Firma und gew\u00fcnschte Anzahl von Anlagen eine Zeile zu generieren. Dazu&nbsp;nehmen wir eine gro\u00dfz\u00fcgig gesch\u00e4tzte Sequenz. Der&nbsp;Join&nbsp;wird durch&nbsp;die&nbsp;zuvor ermittelte Anzahl der Anlagen je Firma begrenzt.&nbsp;<\/p>\n\n\n\n<p><strong>Insert<s>&nbsp;<\/s>Statement:&nbsp;<\/strong>Der Anlagenname soll erkennen lassen, zu welcher Firma diese Anlage geh\u00f6rt.&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 anlage (firma_id, name) \n  select \n    firma.firma_id,\n    'Anlage '||firma.firma_nummer||'.'||anlage_seq.anlage_nummer\n  from (\n    select \n      firma_id, \n      dense_rank() over (order by firma_id) as firma_nummer,\n      dense_rank() over (order by firma_id) * 3 as anzahl_anlagen\n    from firma\n  ) firma\n  join (\n    select rownum as anlage_nummer from dual connect by level&lt;=1000\n  ) anlage_seq on (anlage_seq.anlage_nummer &lt;= firma.anzahl_anlagen)\n;<\/pre>\n\n\n\n<div style=\"height:30px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Zuletzt soll noch je&nbsp;Firma und Anlage eine Abrechnung pro&nbsp;Kalendermonat&nbsp;generiert werden.&nbsp;Hier soll es weniger um die&nbsp;Joins&nbsp;gehen,&nbsp;stattdessen&nbsp;sollen Daten im Vordergrund stehen.&nbsp;<\/p>\n\n\n\n<p>Kernst\u00fcck f\u00fcr zuf\u00e4llige&nbsp;Daten ist in Oracle das&nbsp;dbms_random&nbsp;Package. Es bietet mehrere Funktionen&nbsp;zur&nbsp;Erzeugung von Zahlen an,&nbsp;mit dem&nbsp;Standardbereich&nbsp;0..1 oder mit selbst definierten Bereichen.&nbsp;Die Nachkommastellen der generierten Zahlen muss man allerdings selbst durch Rundung kontrollieren. Es steht ein Generator f\u00fcr Zeichen zur Verf\u00fcgung<s>,<\/s>&nbsp;mit einigen Modi wie&nbsp;Gro\u00df, Klein,&nbsp;alphanumerisch,&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>Rechnungsnummer: <\/strong>Drei Gro\u00dfbuchstaben, gefolgt von&nbsp;sechs Ziffern&nbsp;<\/p>\n\n\n\n<p><strong>Betrag: <\/strong>Ein zuf\u00e4lliger Wert im Bereich 100..900 Euro.&nbsp;&nbsp;<\/p>\n\n\n\n<p><strong>Zuschlag: <\/strong>Bei ca. 10&nbsp;% der Rechnungen soll ein Zuschlag von 50&nbsp;\u20ac erhoben werden, das wird durch den Vergleich einer Zufallszahl im Bereich&nbsp;0..1 auf &lt;&nbsp;0.10 erreicht.&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 abrechnung (firma_id,anlage_id,abrechnungsmonat,rechnungsnummer,betrag,zuschlag)\n  select \n    firma.firma_id,\n    anlage.anlage_id,\n    to_date('01.'||monat||'.2021', 'dd.mm.yyyy') as abrechnungsmonat,\n    dbms_random.string('U',3) || round(dbms_random.value(10000,99999), 0) as rechnungsnummer,\n    round(100 + dbms_random.value(100,900),2) as betrag,\n    case when dbms_random.value&lt;0.10 then 50 else null end as zuschlag\n  from firma\n  join anlage \n    on anlage.firma_id = firma.firma_id\n  join (\n    select rownum as monat from dual connect by level&lt;=12\n  ) monat_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\">Fazit<\/h2>\n\n\n\n<p>Einen Sch\u00f6nheitspreis gewinnen diese Daten nicht,&nbsp;daf\u00fcr sollte man besser auf die erw\u00e4hnten Produkte zur\u00fcckgreifen. Aber in unserem Projekt&nbsp;hat dieser Ansatz geholfen, vom ersten Tag an Daten in ausreichender Qualit\u00e4t und vor allem Quantit\u00e4t bereitzustellen.&nbsp;Damit&nbsp;konnten wir von Anfang an auch die Performance des Systems sicherstellen. Zudem kann im Endergebnis&nbsp;das System mehr Daten&nbsp;verarbeiten&nbsp;sowie diese&nbsp;auch schneller verarbeiten als \u00e4hnliche Systeme beim Kunden.<\/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-- Datenmodell anlegen\n--------------------------------------------------------------------------------------------------------------\ndrop table abrechnung;\ndrop table anlage;\ndrop table firma;\n\ncreate table firma (\n  firma_id number(9) generated as identity,\n  name varchar2(100) not null,\n  constraint pk_firma primary key (firma_id)\n);\n\ncreate table anlage (\n  anlage_id number(9) generated as identity,\n  firma_id number(9) not null,\n  name varchar2(100) not null,\n  constraint pk_anlage primary key (anlage_id),\n  constraint fk_anlage_01 foreign key (firma_id) references firma (firma_id)\n);\n\ncreate table abrechnung (\n  abrechnung_id number(9) generated as identity,\n  firma_id number(9) not null,\n  anlage_id number(9) not null,\n  abrechnungsmonat date not null,\n  rechnungsnummer varchar(30) not null,\n  betrag number(18,2) not null,\n  zuschlag number(18,2),\n  constraint pk_abrechnung primary key (abrechnung_id),\n  constraint fk_abrechnung_01 foreign key (firma_id) references firma (firma_id),\n  constraint fk_abrechnung_02 foreign key (anlage_id) references anlage (anlage_id)\n);\n\n--------------------------------------------------------------------------------------------------------------\n-- Daten generieren\n--------------------------------------------------------------------------------------------------------------\n\n-- Alle Daten l\u00f6schen\n\ntruncate table abrechnung;\ntruncate table anlage;\ntruncate table firma;\n\nwhenever sqlerror exit rollback;\n\n-- Firmen erzeugen (hier 3)\ninsert into firma (name) \n  select\n    'Firma '||firma_seq.firma_nummer as name\n  from (select rownum as firma_nummer from dual connect by level&lt;=3) firma_seq\n;\n \ncommit;\n\n-- Anlagen je Firma einf\u00fcgen. Die erste Firma erh\u00e4lt drei Anagen, die n\u00e4chste sechs Anlagen, ...\ninsert into anlage (firma_id, name) \n  select \n    firma.firma_id,\n    'Anlage '||firma.firma_nummer||'.'||anlage_seq.anlage_nummer\n  from (\n    -- Je Firma deren laufende Nummer ermitteln und die gew\u00fcnschte Anzahl von Anlagen\n    select \n      firma_id, \n      dense_rank() over (order by firma_id) as firma_nummer,\n      dense_rank() over (order by firma_id) * 3 as anzahl_anlagen\n    from firma\n  ) firma\n  join (\n    -- Eine Sequenz von Anlagen, durch den Join die ben\u00f6tigten Zeilen je Firma mit N Anlagen zu erhalten\n    select rownum as anlage_nummer from dual connect by level&lt;=1000\n  ) anlage_seq on (anlage_seq.anlage_nummer &lt;= firma.anzahl_anlagen)\n  -- order by 1,2\n;\n \ncommit;\n\n-- Je Firma und Anlage eine Abrechnung je Kalendermonat erzeugen.\n-- Die Rechnungsnummer ist ein zuf\u00e4lliger String mit drei Bucstaben und sechs Ziffern.\n-- Der Betrag ist ein zuf\u00e4lliger Wert im Bereich 100..900 Euro.\n-- Der Zuschlag von 50 Euro wird bei ca. 10% der Rechnungen gesetzt.\ninsert into abrechnung (firma_id,anlage_id,abrechnungsmonat,rechnungsnummer,betrag,zuschlag)\n  select \n    firma.firma_id,\n    anlage.anlage_id,\n    to_date('01.'||monat||'.2021', 'dd.mm.yyyy') as abrechnungsmonat,\n    dbms_random.string('U',3) || round(dbms_random.value(10000,99999), 0) as rechnungsnummer,\n    round(dbms_random.value(100,1000),2) as betrag,\n    case when dbms_random.value&lt;0.10 then 50 else null end as zuschlag\n  from firma\n  join anlage on anlage.firma_id = firma.firma_id\n  join (select rownum as monat from dual connect by level&lt;=12) monat_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>Die Performance-Messung bei Datenbanken kleinerer Datenmengen ist oft durch manuelle Tests m\u00f6glich. Doch wie verh\u00e4lt es sich mit Massendaten? Die Datengenerierung f\u00fcr solch einen Fall wird in diesem Beitrag beleuchtet.<\/p>\n","protected":false},"author":127,"featured_media":2600,"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":[16],"tags":[570,604,605,610,686],"topics":[],"class_list":["post-2569","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dot-net","tag-zeiss-digital-innovation","tag-massendaten","tag-datengenerierung","tag-sql","tag-performance-test"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Testdaten mit Oracle SQL erzeugen - ZEISS Digital Innovation Blog<\/title>\n<meta name=\"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=\"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\/de\/testdaten-mit-oracle-sql-erzeugen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/testdaten-mit-oracle-sql-erzeugen\/\" \/>\n<meta property=\"og:site_name\" content=\"Digital Innovation Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ZEISSDigitalInnovation\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-27T09:14:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-06-16T12:50:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2268\" \/>\n\t<meta property=\"og:image:height\" content=\"1512\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\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:image\" content=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@ZEISS_di\" \/>\n<meta name=\"twitter:site\" content=\"@ZEISS_di\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Christian Harla\u00df\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"6\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/testdaten-mit-oracle-sql-erzeugen\/\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/testdaten-mit-oracle-sql-erzeugen\/\",\"name\":\"Testdaten mit Oracle SQL erzeugen - ZEISS Digital Innovation Blog\",\"isPartOf\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/testdaten-mit-oracle-sql-erzeugen\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/testdaten-mit-oracle-sql-erzeugen\/#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:56+00:00\",\"dateModified\":\"2022-06-16T12:50:31+00:00\",\"author\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/04995011d3c7198ce80a97861b18a15b\"},\"description\":\"Die Performance-Messung bei Datenbanken kleinerer Datenmengen ist oft durch manuelle Tests m\u00f6glich. Doch wie verh\u00e4lt es sich mit Massendaten?\",\"breadcrumb\":{\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/testdaten-mit-oracle-sql-erzeugen\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/testdaten-mit-oracle-sql-erzeugen\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/testdaten-mit-oracle-sql-erzeugen\/#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\/de\/testdaten-mit-oracle-sql-erzeugen\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Testdaten mit Oracle SQL erzeugen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#website\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/\",\"name\":\"Digital Innovation Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/04995011d3c7198ce80a97861b18a15b\",\"name\":\"Christian Harla\u00df\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/harlass_christian-150x150.jpg\",\"contentUrl\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/harlass_christian-150x150.jpg\",\"caption\":\"Christian Harla\u00df\"},\"description\":\"Christian Harla\u00df studierte Informatik an der TU Dresden und arbeitet als Softwarearchitekt und Entwickler bei der ZEISS Digital Innovation. Sein Schwerpunkt liegt dabei vor allem auf Business Anwendungen. Au\u00dferdem interessiert er sich f\u00fcr Themen aus den Bereichen .NET und Datenbanken.\",\"url\":\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/author\/christianharlass\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Testdaten mit Oracle SQL erzeugen - ZEISS Digital Innovation Blog","description":"Die Performance-Messung bei Datenbanken kleinerer Datenmengen ist oft durch manuelle Tests m\u00f6glich. Doch wie verh\u00e4lt es sich mit Massendaten?","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\/de\/testdaten-mit-oracle-sql-erzeugen\/","og_locale":"de_DE","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\/de\/testdaten-mit-oracle-sql-erzeugen\/","og_site_name":"Digital Innovation Blog","article_publisher":"https:\/\/www.facebook.com\/ZEISSDigitalInnovation\/","article_published_time":"2021-09-27T09:14:56+00:00","article_modified_time":"2022-06-16T12:50:31+00:00","og_image":[{"width":2268,"height":1512,"url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle.jpg","type":"image\/jpeg"}],"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_image":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/202109_Massendatengenerierung_Oracle.jpg","twitter_creator":"@ZEISS_di","twitter_site":"@ZEISS_di","twitter_misc":{"Verfasst von":"Christian Harla\u00df","Gesch\u00e4tzte Lesezeit":"6\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/testdaten-mit-oracle-sql-erzeugen\/","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/testdaten-mit-oracle-sql-erzeugen\/","name":"Testdaten mit Oracle SQL erzeugen - ZEISS Digital Innovation Blog","isPartOf":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/testdaten-mit-oracle-sql-erzeugen\/#primaryimage"},"image":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/testdaten-mit-oracle-sql-erzeugen\/#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:56+00:00","dateModified":"2022-06-16T12:50:31+00:00","author":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/04995011d3c7198ce80a97861b18a15b"},"description":"Die Performance-Messung bei Datenbanken kleinerer Datenmengen ist oft durch manuelle Tests m\u00f6glich. Doch wie verh\u00e4lt es sich mit Massendaten?","breadcrumb":{"@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/testdaten-mit-oracle-sql-erzeugen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.zeiss.com\/digital-innovation\/de\/testdaten-mit-oracle-sql-erzeugen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/testdaten-mit-oracle-sql-erzeugen\/#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\/de\/testdaten-mit-oracle-sql-erzeugen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/"},{"@type":"ListItem","position":2,"name":"Testdaten mit Oracle SQL erzeugen"}]},{"@type":"WebSite","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#website","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/","name":"Digital Innovation Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/04995011d3c7198ce80a97861b18a15b","name":"Christian Harla\u00df","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/#\/schema\/person\/image\/","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/harlass_christian-150x150.jpg","contentUrl":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-content\/uploads\/sites\/2\/2021\/09\/harlass_christian-150x150.jpg","caption":"Christian Harla\u00df"},"description":"Christian Harla\u00df studierte Informatik an der TU Dresden und arbeitet als Softwarearchitekt und Entwickler bei der ZEISS Digital Innovation. Sein Schwerpunkt liegt dabei vor allem auf Business Anwendungen. Au\u00dferdem interessiert er sich f\u00fcr Themen aus den Bereichen .NET und Datenbanken.","url":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/author\/christianharlass\/"}]}},"author_meta":{"display_name":"Christian Harla\u00df","author_link":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/author\/christianharlass\/"},"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\/de\/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\/de\/category\/dot-net\/\" class=\"advgb-post-tax-term\">ZEISS Digital Innovation<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/dot-net\/\" class=\"advgb-post-tax-term\">Massendaten<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/dot-net\/\" class=\"advgb-post-tax-term\">Datengenerierung<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/dot-net\/\" class=\"advgb-post-tax-term\">SQL<\/a>","<a href=\"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/category\/dot-net\/\" class=\"advgb-post-tax-term\">Performance-Test<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">ZEISS Digital Innovation<\/span>","<span class=\"advgb-post-tax-term\">Massendaten<\/span>","<span class=\"advgb-post-tax-term\">Datengenerierung<\/span>","<span class=\"advgb-post-tax-term\">SQL<\/span>","<span class=\"advgb-post-tax-term\">Performance-Test<\/span>"]}},"comment_count":"0","relative_dates":{"created":"Posted 5\u00a0Jahren ago","modified":"Updated 4\u00a0Jahren ago"},"absolute_dates":{"created":"Posted on September 27, 2021","modified":"Updated on Juni 16, 2022"},"absolute_dates_time":{"created":"Posted on September 27, 2021 9:14 a.m.","modified":"Updated on Juni 16, 2022 12:50 p.m."},"featured_img_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","series_order":"","_links":{"self":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/posts\/2569","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/users\/127"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/comments?post=2569"}],"version-history":[{"count":30,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/posts\/2569\/revisions"}],"predecessor-version":[{"id":3035,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/posts\/2569\/revisions\/3035"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/media\/2600"}],"wp:attachment":[{"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/media?parent=2569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/categories?post=2569"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/tags?post=2569"},{"taxonomy":"topics","embeddable":true,"href":"https:\/\/blogs.zeiss.com\/digital-innovation\/de\/wp-json\/wp\/v2\/topics?post=2569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}