هل من الممكن استخدام أمر Data Data Infile Type لتحديث الصفوف في DB؟

StackOverflow https://stackoverflow.com/questions/1506511

  •  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 الخاص بك.

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