سؤال

يجب أن ترحيل جدول من MSSQL Server إلى الخلية.المشكلة هي أن طاولة كبيرة جدا (65 ملايين السجلات) و العملية كلها تستغرق الكثير من الوقت.هل لدى أحدكم أي فكرة عن كيفية تسريع الأمور ؟ أي الأدوات المفيدة التي يمكن أن تحسن هذا ؟

هل كانت مفيدة؟

المحلول

هل يمكن تصدير البيانات إلى نص ثم استخدام العبارة تحميل الخلية:

وتحميل البيانات المحلية INFILE '/somefolder/text_file_with_data.txt' في حقول some_table الجدول إنهائها من قبل خطوط '\t' إنهائها من قبل '\n'

وأو إذا وضعت ملف البيانات على خادم الخلية يمكنك:

وتحميل البيانات INFILE '/somefolder_on_the_mysql_server/text_file_with_data.txt' في حقول some_table الجدول إنهائها من قبل خطوط '\t' إنهائها من قبل '\n'

وأنا لست متأكدا ما بناء الجملة من أجل MSSQL هو تصدير

ويمكنك تصدير دائما في مجموعات من 10،000 أو 100،000.

نصائح أخرى

وتحتاج للقيام بذلك مرة واحدة فقط؟ لا نضيع وقتا طويلا الأمثل، الانتظار 'حتى انها من خلال والمضي قدما.

وتحتاج إلى القيام بذلك في كثير من الأحيان؟ ثم وضع ما هي الأدوات / التقنيات التي تستخدم حاليا سيكون مفيدا.

هنا هو كيف فعلت لترحيل 800K سجلات الجدول من MS Sql Server MySQL.

إنشاء استعلام لعرض البيانات في تنسيق جدولي :

SELECT [PostalCode] + ' ' +
  [StateCode] + '   ' +
  [Latitude] + '    ' +
  [Longitude] + '   ' +
  [CityName]  
FROM [dbo].[PostalCode]

تنفيذ الاستعلام في SQL Server إدارة Studio ثم حدد إلى إخراج النتائج في ملف (القائمة :الاستعلام -> نتائج -> النتائج إلى ملف)

اسم الملف يجب أن يكون اسم الجدول في الخلية.ملحق الملف لا يهم.

ثم استخدام mysqlimport.exe (في Windows) إلى استيراد البيانات (الجدول يجب أن تكون موجودة في قاعدة بيانات MySQL) :

mysqlimport.exe --user=user_name
  --columns=postalcode,statecode,latitude,longitude,cityname 
  --ignore-lines=2 databaseName pathToFile

بعد استيراد اضطررت إلى حذف آخر 2 السجلات من الجدول لأن نهاية الملف يحتوي على بعض القمامة : (818193 row(s) تتأثر)

بالنسبة 800K هو سريع جدا :10 ثوان إلى تصدير ثم 10 ثوان على الاستيراد.

ويساعد هذا الأمل.

تأكد من أن الجداول الخلية لها في البداية لم فهارس. إضافتها مرة واحدة الانتهاء من الأحمال.

تأكد من أن ملف الخلية الجدول تخزين كبيرة بما يكفي قبل البدء الإدراج باستخدام مثل هذا البيان في ملف my.ini الخاص بك:

innodb_data_file_path=ibdata1:1000M:autoextend

وحاول إذا كان يمكنك الحصول على البيانات من MSSQL وإلى الخلية باستخدام جهاز مباحث أمن الدولة حزم / DTS التي يمكن أن تولد مع معالج الاستيراد / التصدير من SQL Server. (اتصال الخلية مع OLEDB المناسب / مزود ADO.

وابدأ عندما كنت رئيسا المنزل يوم الجمعة، والتحقق مرة أخرى بعد عطلة نهاية الأسبوع.)

تأكد من أي أعمدة لها كشاف عليها، وحذف أي المفاتيح الخارجية (إذا كنت تستخدم ك InnoDB لنوع الجدول) لاستيراد.

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