هل من الممكن استخدام أمر Data Data Infile Type لتحديث الصفوف في DB؟
-
19-09-2019 - |
سؤال
الجدول الزائدي:
| primary_key | first_name | last_name | date_of_birth |
| 1 | John Smith | | 07/04/1982 |
في اللحظة الاسم الأول يحتوي على مستخدمين اسم كامل للعديد من الصفوف. النتيجة المرجوة هي تقسيم البيانات، لذلك يحتوي First_name على "John" و Last_name يحتوي على "Smith".
لدي ملف CSV يحتوي على التنسيق المطلوب للبيانات:
| primary_key | first_name | last_name |
| 1 | John | Smith |
هل هناك طريقة لاستخدام الأمر تحميل بيانات التحميل لمعالجة ملف CSV لتحديث جميع الصفوف في هذا الجدول باستخدام Primery_Key - وليس استبدال أي بيانات أخرى في الصف أثناء العملية (أي date_of_pirth)؟
المحلول
رقم بينما تحميل البيانات infile. لديه خيار استبدال، سوف في الواقع يحل محل الصف المعني - أي حذف واحد الموجود وإدراج واحد جديد.
إذا قمت بتكوين بيانات التحميل الخاصة بك Invile لإدراج أعمدة معينة فقط، فسيتم تعيين الآخرين على إفتراضي القيم، وليس القيم التي تحتوي عليها حاليا.
يمكنك تعديل ملف CSV الخاص بك لاحتواء مجموعة من عبارات التحديث بدلا من ذلك؟ يجب أن تكون واضحة بشكل معقول من خلال استبدال بعض regex.
نصائح أخرى
في هذا الوضع عادة LOAD DATA INFILE
إلى جدول TEMP مع هيكل متطابق. ثم أفعل INSERT
مع ON DUPLICATE KEY UPDATE
من جدول TEMP إلى الجدول الحقيقي. يسمح هذا بفحص نوع البيانات دون تحطيم طاولتك الحقيقية؛ إنه سريع نسبيا ولا يتطلب الأمراض مع ملف .csv الخاص بك.