سؤال

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

وبالتالي فإن المستخدم بتحميل ملف csv الأسبوع المقبل البيانات.فإنه يحصل على إدراجها في DB, لا مشكلة.

ولكن

وبعد ساعة كان يحصل على ردود الفعل من الجميع ، ويجب إجراء تحديثات وفقا لذلك.كان التحديثات csv و يذهب إلى تحميله على ديسيبل.

الآن النظام أنا باستخدام التحقق لمعرفة ما إذا كانت البيانات لهذا الأسبوع هو بالفعل هناك ، وإذا كان كذلك ، تسحب كل تلك البيانات من DB, السيناريو يجد الاختلافات ويرسل بها ، وبعد كل هذا ، فإن البيانات القديمة حذف البيانات واستبدالها مع البيانات الجديدة.

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

لذلك!

هل هناك طريقة ذكية مقارنة البيانات الجديدة إلى البيانات الموجودة على الصفوف التي يتم تغيير/حذف/إضافة ، وجعل تلك التغييرات ؟ الآن يبدو أنني يمكن أن تفعل التحديث, لكن لن تحصل على أي رد على ما قد تغير...

وذلك بفضل!

تحرير سريع:

لا مفاتيح خارجية هي قيد الاستخدام حاليا.هذا سوف يتغير قريبا, ولكن لا ينبغي أن تحدث فرقا ، لأن مفاتيح خارجية سوف نشير فقط إلى من البيانات آثار وهكذا لن تحتاج إلى تغيير.بقدر المفاتيح الأساسية الذهاب التي تمثل قليلا من معضلة:

البيانات في السؤال هو الجميع جدول العمل.لذلك سيكون من الرائع (لتطبيقات محددة من هذا الجدول مجرد إخراج) لكل التحول الرئيسية.ولكن المشكلة هي, دعنا نقول أن user1 كان في وقت متأخر يوم الاثنين.التأخير هو مسجل في جدول منفصل يرتبط التحول باستخدام المفتاح shift.ولكن إذا كان في يوم الثلاثاء هناك حاجة إلى إجراء بعض التغييرات في الأسبوع بالفعل في التقدم ، أخشى أنه سوف يصبح من الصعب جدا للتأكد من أن كافة الإدخالات في قاعدة البيانات التي حدثت بالفعل (وبالتالي قد الجمعيات التي لا ينبغي أن تكون مكسورة) سوف تحصل على إعادة مرتبطا في هذه العملية.للأسف, انها ليست بهذه البساطة فقط تحديث جميع الأحداث التي وقعت بعد الوقت الحالي ، وهذا من شأنه أن إضافة العمل (وبالتالي يجعلها أقل قابلية للتسويق) إلى الناس الذين لا تحميل.أساسا أنها تجعل الجدول على برنامج واحد, تصدير إلى CSV ، ومن ثم تحميله على صفحة ويب لجميع webapps التي تحتاج إلى هذه البيانات.لذلك هو ببساطة أسهل بكثير بالنسبة لهم (وأقل إرهاقا للجميع المشاركة) أن تفعل نفس الروتين كل وقت المصدرة أسبوع كامل و تحميل.

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

هنا هو ذات السؤال:

Suppose Joe User was schedule to wash dishes from 7:00 PM to 8:00 PM, but the new
data has him working 6:45 PM to 8:30 PM.  Has the shift been changed? Or has the old
one been deleted and a new one added?

وآخر:

Say Jane was schedule to work 1:00 PM to 3:00 PM, but now everyone has a mandatory
staff meeting at 2:00 to 3:00. Has she lost one shift and gained two? Or has one
shift changed and she gained one?

أنا مهتم حقا في معرفة كيفية هذا النوع من البيانات هو عادة التعامل معها/اقترب أكثر من الإجابات المحددة أعلاه.

مرة أخرى شكرا لك.

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

المحلول

الآن النظام أنا باستخدام التحقق لمعرفة ما إذا كانت البيانات لهذا الأسبوع هو بالفعل هناك ، وإذا كان كذلك ، تسحب كل تلك البيانات من DB, السيناريو يجد الاختلافات ويرسل بها ، وبعد كل هذا ، فإن البيانات القديمة حذف البيانات واستبدالها مع البيانات الجديدة.

لذلك السيناريو الخاص بك يعرف الاختلافات ، أليس كذلك ؟ و كنت لا ترغب في استخدام المزيد من أدوات إضافية ، وبصرف النظر عن السيناريو الخاص بك و MySQL, صحيح ؟

أنا مقتنع تماما أن الخلية لا تقدم أي 'مهرجان دبي السينمائي الدولي' أداة في حد ذاته, لذلك أفضل ما يمكن تحقيقه هو جعل ملف CSV للحصول على التحديثات فقط.أعني - يجب أن تحتوي فقط على تغيير الصفوف.التحديث سيكون أسرع و تغير كل البيانات سوف تكون متاحة بسهولة.

نصائح أخرى

إذا كان لديك مفتاح فريد على واحد من المجالات التي يمكنك استخدامها:

LOAD DATA LOCAL INFILE '/path/to/data.csv' REPLACE INTO TABLE table_name
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top