سؤال

ما هي أسرع طريقة لملء جدول 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.

إذا كنت ترغب في الحصول على طاولة تمتلئ أكثر قليلاً ، فيمكنك تحقيق ذلك بنفس الطريقة هذه المرة من خلال تنفيذ استعلام بسيط واتباع هذه الخطوات:

  1. اختر أحد الجداول التي تحتوي على عدد ملحوظ من الصفوف ، قل DBO.Customers

  2. انقر بزر الماوس الأيمن على ذلك وحدد Script Table as > Create To > New Query Editor Window

  3. قم بتسمية جدولك الجديد إلى شيء آخر مثل dbo.customerstest ، يمكنك الآن تنفيذ الاستعلام للحصول على جدول جديد بهيكل مماثل مع dbo.customers.

ملاحظة: ضع في اعتبارك أنه إذا كان له هوية ، فقم بتغييرها Identity Specification to No نظرًا لأنه من المفترض أن تملأ الجدول الجديد بواسطة بيانات الجهاز الأصلي مرارًا وتكرارًا.

  1. قم بتشغيل الاستعلام التالي ، وسيتم تشغيله 1000 مرة ، يمكنك تغييره إلى أكثر أو أقل ولكن كن على علم بأنه قد يدوم Minuets بناءً على أجهزة الكمبيوتر الخاصة بك:

INSERT INTO [dbo].[CustomersTest] SELECT * FROM [dbo].[Customers] GO 1000

  1. بعد فترة من الوقت لديك طاولة مع صفوف وهمية فيه!

كما ذكر SQLMenace ، يعد Redgate Data Generator أداة جيدة جدًا للوفاء بها ، فهي تكلف 369 دولارًا ، ولديك فرصة تجريبية لمدة 14 يومًا.

النقطة الجيدة هي أن Redgate يحدد المفاتيح الأجنبية حتى تتمكن من تطبيق الانضمام إلى استفساراتك.

لديك مجموعة من الخيارات التي تتيح لك أن تقرر كيف من المفترض أن يتم ملء كل عمود ، كل عمود متوقع بشكل دلالي بحيث يتم اقتراح البيانات ذات الصلة ، على سبيل المثال إذا كان لديك عمود يسمى "قسم" ، فهو غير مملوء بواسطة غريب الشخصيات ، تم ملؤها من خلال تعبيرات مثل "Technical" ، "Web" ، "Customer" ، وما إلى ذلك. حتى يمكنك استخدام التعبير العادي لتقييد الأحرف المحددة.

ملأت طاولاتي مع أكثر من 1000000 سجل والتي كانت محاكاة رائعة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top