أسرع طريقة لملء جدول SQL مع بيانات وهمية
-
04-10-2019 - |
سؤال
ما هي أسرع طريقة لملء جدول SQL مع بيانات وهمية؟
لدي طاولة واسعة مع حوالي 40 حقل من أنواع مختلفة (int ، bit ، varchar ، وما إلى ذلك) وأحتاج إلى إجراء بعض اختبارات الأداء. أنا أستخدم SQL Server 2008.
شكرًا لك!
المحلول
مولد بيانات SQL بواسطة Redgate
توليد البيانات بنقرة واحدة
بيانات واقعية تستند إلى اسم العمود والجدول
يمكن تخصيص البيانات إذا رغبت في ذلك
يلغي ساعات العمل الشاق
الدعم الكامل ل SQL Server 2008
نصائح أخرى
أوصي بمولد بيانات مخصص مجاني مرخص له GNU http://www.generatedata.com/
إجابة متأخرة ولكن يمكن أن تكون مفيدة للقراء الآخرين لهذا الموضوع. بجانب الحلول الأخرى ، يمكنني أن أوصي باستيراد البيانات من ملف .CSV باستخدام SSMs أو البرامج البرمجية المخصصة للاستيراد SQL. يوجد برنامج تعليمي خطوة بخطوة حول كيفية القيام بذلك ، لذلك قد ترغب في التحقق من ذلك: http://solutioncenter.apexsql.com/how-to-to--genery-roandomized-test-data-from-a-csv-file/
كن على دراية بأن استيراد ملف .csv باستخدام SSMs أو البرامج النصية للاستيراد SQL المخصصة ، أسهل من إنشاء إدراج SQL يدويًا ، ولكن هناك بعض القيود ، كما هو موضح في البرنامج التعليمي:
إذا كانت هناك حاجة إلى ملء الآلاف من الصفوف ، ويحتوي ملف .csv على بضع مئات من صفوف البيانات ، فهذا لا يكفي. يعيد الحل البديل نفس ملف .CSV مرارًا وتكرارًا حتى يلزم الحاجة. العيب في هذه الطريقة هو أنه سيتم إدراج كتل كبيرة من الصفوف مع نفس البيانات ، دون تحديد عشوائي لها.
يشرح البرنامج التعليمي أيضًا كيفية استخدام مولد بيانات SQL من طرف ثالث Apexsql توليد. تحتوي الأداة على وظيفة متكاملة لإنشاء كميات كبيرة من البيانات العشوائية من ملف تنسيق .CSV المستورد. يتميز التطبيق بتجربة مجانية تعمل بكامل طاقتها حتى تتمكن من تنزيلها وتجربتها لمعرفة ما إذا كان يعمل من أجلك.
تحتاج فقط Go 1000
بعد إدراجك ، لملئه 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
في الحالة ، هناك عمود واحد أو أكثر هو هوية (بمعنى أنها تقبل القيم الفريدة ، إذا كانت تلقائية تلقائية) ، فأنت لا تضعه في استعلامك ، على سبيل المثال إذا كان المعرف في 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
.
إذا كنت ترغب في الحصول على طاولة تمتلئ أكثر قليلاً ، فيمكنك تحقيق ذلك بنفس الطريقة هذه المرة من خلال تنفيذ استعلام بسيط واتباع هذه الخطوات:
اختر أحد الجداول التي تحتوي على عدد ملحوظ من الصفوف ، قل DBO.Customers
انقر بزر الماوس الأيمن على ذلك وحدد
Script Table as > Create To > New Query Editor Window
قم بتسمية جدولك الجديد إلى شيء آخر مثل dbo.customerstest ، يمكنك الآن تنفيذ الاستعلام للحصول على جدول جديد بهيكل مماثل مع dbo.customers.
ملاحظة: ضع في اعتبارك أنه إذا كان له هوية ، فقم بتغييرها Identity Specification to No
نظرًا لأنه من المفترض أن تملأ الجدول الجديد بواسطة بيانات الجهاز الأصلي مرارًا وتكرارًا.
- قم بتشغيل الاستعلام التالي ، وسيتم تشغيله 1000 مرة ، يمكنك تغييره إلى أكثر أو أقل ولكن كن على علم بأنه قد يدوم Minuets بناءً على أجهزة الكمبيوتر الخاصة بك:
INSERT INTO [dbo].[CustomersTest]
SELECT * FROM [dbo].[Customers]
GO 1000
- بعد فترة من الوقت لديك طاولة مع صفوف وهمية فيه!
كما ذكر SQLMenace ، يعد Redgate Data Generator أداة جيدة جدًا للوفاء بها ، فهي تكلف 369 دولارًا ، ولديك فرصة تجريبية لمدة 14 يومًا.
النقطة الجيدة هي أن Redgate يحدد المفاتيح الأجنبية حتى تتمكن من تطبيق الانضمام إلى استفساراتك.
لديك مجموعة من الخيارات التي تتيح لك أن تقرر كيف من المفترض أن يتم ملء كل عمود ، كل عمود متوقع بشكل دلالي بحيث يتم اقتراح البيانات ذات الصلة ، على سبيل المثال إذا كان لديك عمود يسمى "قسم" ، فهو غير مملوء بواسطة غريب الشخصيات ، تم ملؤها من خلال تعبيرات مثل "Technical" ، "Web" ، "Customer" ، وما إلى ذلك. حتى يمكنك استخدام التعبير العادي لتقييد الأحرف المحددة.
ملأت طاولاتي مع أكثر من 1000000 سجل والتي كانت محاكاة رائعة.