يُفتح الملف الأصلي والملف المحدَّث، ويُختار العمود الذي يحدد الصف، مثل رقم الطلب أو رمز المنتج (SKU)، فتظهر الفروق فورًا: الصفوف الموجودة في الملف المحدَّث فقط مضافة، والموجودة في الأصلي فقط محذوفة، والموجودة في الملفين بقيم مختلفة معدّلة، مع عرض كل قيمة قبل التغيير وبعده. ويمكن أن تنتقل الصفوف إلى أي موضع في الملف دون أن يُعدّ ذلك تغييرًا. تُنزَّل النتيجة تقريرًا بصيغة CSV فيه سطر لكل خلية معدّلة. يُقارَن الملفان في متصفحك ولا يُرفعان أبدًا.
طريقة مقارنة ملفي CSV
- افتح الملف الأصلي في الخانة الأولى والملف المحدَّث في الثانية. لكل خانة إعدادات استيراد خاصة بها للمحدِّد وصف العناوين والترميز، فيمكن مقارنة ملف مفصول بفواصل منقوطة بآخر مفصول بفواصل.
- اختر المطابقة حسب المفتاح، وحدِّد عمودًا مفتاحيًا أو أكثر من الأعمدة المشتركة بين الملفين. وتُستخدم عدة أعمدة إذا لم يكن أي عمود منفرد فريدًا، مثل
order_idوline. - اضبط خيارات المقارنة إن لزم، وراجع الملخص وقائمة الفروق، مع إمكانية قصرها على المضافة أو المحذوفة أو المعدّلة، ثم نزّل تقرير التغييرات.
تُستخدم المطابقة حسب موضع الصف بدلًا من ذلك إذا لم يكن في الملفين عمود معرّف وكانت الصفوف بالترتيب نفسه: يُقارَن الصف 1 بالصف 1، وهكذا. وعندئذ يكفي صف واحد مُدرج لتبدو كل الصفوف بعده معدّلة، لذا يُفضّل استخدام مفتاح متى توفر.
خيارات المقارنة
| تجاهل حالة الأحرف | تساوي Desk Lamp القيمة desk lamp. وينطبق على الأعمدة المفتاحية والقيم معًا. |
|---|---|
| تجاهل المسافات الزائدة | يزيل المسافات من الطرفين، ويعامل أي سلسلة من المسافات أو علامات الجدولة أو فواصل الأسطر داخل القيمة كمسافة واحدة قبل المقارنة. وينطبق على المفاتيح أيضًا. |
| هامش التفاوت للأرقام | إذا كانت القيمتان رقمين، تُعدّان متساويتين إذا لم يتجاوز الفرق بينهما هذا المقدار، مثل 0.01. الحساب عشري دقيق لا بالفاصلة العائمة، والهامش 0 يجعل 45.0 و45.00 الرقم نفسه. ولا تُعدّ القيم أرقامًا إلا إذا كُتبت بنقطة عشرية ودون فاصل آلاف: تبقى 1,000 نصًا، بينما تُقرأ 1e3 على أنها 1000. ويجعل الهامش أيضًا 007 تساوي 7، لأن كلتيهما تُقرأ رقمًا. ولمقارنة النص بدقة يُترك الحقل فارغًا. |
| أعمدة تُتجاهل | أعمدة تُستبعد من المقارنة كليًا، مثل updated_at أو طابع زمني للتصدير يتغير في كل مرة. |
الأعمدة الموجودة في ملف واحد فقط تُذكر في الملخص ولا تُقارَن. أعِد تسميتها بأداة مطابقة أعمدة CSV إذا كانت العمود نفسه باسم جديد.
المفاتيح المكررة والفارغة
يُفترض أن يحدد المفتاح صفًا واحدًا. وإذا لم يكن كذلك فلا شيء يُخفى: يعدّ الملخص المفاتيح المكررة ويذكر أولها، وتُقرن الصفوف التي تشترك في مفتاح بترتيب ظهورها. فيُقارَن أول صف أصلي مفتاحه 1 بأول صف محدَّث مفتاحه 1، والثاني بالثاني، ويُبلَّغ عن أي صفوف زائدة في أي من الطرفين على أنها محذوفة أو مضافة.
قد يُظهر هذا الإقران تغييرًا هو في الحقيقة تبادل في ترتيب صفين لهما المفتاح نفسه. فإذا ذكر الملخص مفاتيح مكررة، أضِف عمودًا مفتاحيًا آخر إلى أن تصبح كل تركيبة فريدة. أما الصفوف التي كل أعمدتها المفتاحية فارغة فتُعدّ على حدة، لأنها تأتي عادةً من أسطر فارغة أو تصدير معطوب.
قراءة النتائج والتقرير
يذكر الملخص عدد الصفوف المضافة والمحذوفة والمعدّلة وغير المتغيرة، وإجمالي الخلايا المعدّلة. وتعرض القائمة الفروق بترتيب الملف الأصلي، تليها الصفوف الموجودة في الملف المحدَّث فقط. ويظهر لكل فرق المفتاح ورقم الصف في كل ملف، مع عدّ صفوف البيانات من 1 دون صف العناوين. تعرض الصفحة أول 500 فرق، ويضم التقرير كل الفروق.
change | added (مضاف) أو removed (محذوف) أو changed (معدّل). |
|---|---|
| الأعمدة المفتاحية | قيمة المفتاح. ومع تفعيل تجاهل حالة الأحرف أو المسافات يظهر المفتاح كما قورن، بأحرف صغيرة أو بعد إزالة المسافات. وعند المطابقة حسب الموضع يحمل عمود واحد اسمه row رقم الصف. |
original_row، updated_row | رقما صف البيانات في كل ملف؛ ويكون فارغًا في الطرف الذي لا يوجد فيه الصف. |
column، original_value، updated_value | سطر لكل خلية معدّلة. وتكون فارغة للصفوف المضافة والمحذوفة، التي يأخذ كل منها سطرًا واحدًا. |
التقرير ملف CSV بترميز UTF-8 يُسمّى باسم الملف المحدَّث، مثل feb-changes.csv. ويمكن فتحه في عارض CSV لفرز التغييرات أو البحث فيها.
حل المشكلات
- كل صف يظهر مضافًا ومحذوفًا. قيم المفتاح مكتوبة بطريقة مختلفة في الملفين، مثل
00123 مقابل 123 أو مسافة في الآخر. فعّل تجاهل المسافات، أو أصلِح العمود في تنظيف CSV. والأصفار في البداية تُحتسب دائمًا في المفاتيح، لأن المفاتيح تُقارَن كنص. - أرقام متساوية تظهر معدّلة.
45.00 و45.0 نصان مختلفان؛ أدخِل هامش تفاوت مثل 0 أو 0.005 لمقارنتهما كرقمين. أما الأرقام بفاصلة عشرية أو فواصل آلاف فتُقارَن دائمًا كنص. - عمود مفتاحي غير موجود في القائمة. لا يمكن أن يكون مفتاحًا إلا عمود موجود في الملفين، ويجب أن يتطابق الاسمان تمامًا. وراجع إعدادات الاستيراد إذا وصل صف العناوين كله في عمود واحد.
- كل الصفوف بعد نقطة معينة معدّلة. المطابقة حسب الموضع، وقد أُدرج صف أو حُذف. انتقل إلى المطابقة حسب المفتاح.
الحدود والخصوصية
يمكن أن يصل كل ملف إلى 25 ميغابايت و100 ألف صف و250 عمودًا ومليوني خلية. والمقارنة لا تعمل تدفقيًا: يُحفظ الملفان في الذاكرة، وتتحدّث الفروق مع تغيير الخيارات.
يُقارَن الملفان في متصفحك ولا يُرسلان أبدًا إلى أي خادم. ولجمع النسختين بدلًا من ذلك استخدم دمج ملفات CSV؛ ولفحص ملف واحد وفق قواعد استخدم التحقق من CSV.
مثال
قائمتا منتجات مفتاحهما sku، قورنتا بالإعدادات الافتراضية الدقيقة. الصفوف بترتيب مختلف، ولا أثر لذلك. ومع تفعيل تجاهل حالة الأحرف والمسافات وهامش تفاوت 0.001 لا يبقى إلا تغيير stock في المنتج 00456.
jan.csv (original) sku,name,price,stock 00123,Desk lamp,19.90,4 00456,Shelf,45.00,2 00789,Stool,12.00,9 feb.csv (updated) sku,name,price,stock 00456,Shelf,45.0,0 00123,Desk Lamp ,19.90,4 01010,Bench,80.00,1
change,sku,original_row,updated_row,column,original_value,updated_value changed,00123,1,2,name,Desk lamp,"Desk Lamp " changed,00456,2,1,price,45.00,45.0 changed,00456,2,1,stock,2,0 removed,00789,3,,,, added,01010,,3,,,
أسئلة وأجوبة
هل يهم ترتيب الصفوف؟
ليس عند المطابقة حسب المفتاح: يُعثر على الصفوف بمفتاحها أينما كانت في كل ملف. ولا يهم الترتيب إلا عند المطابقة حسب موضع الصف.
أي الملفين يكون الأصلي؟
الأقدم. يُبلَّغ عن الصفوف الموجودة في الملف الثاني فقط بأنها مضافة، وعن الموجودة في الأول فقط بأنها محذوفة، فتبديل الملفين يبدّل هاتين القائمتين ويبدّل القيم قبل التغيير وبعده.
هل يمكن مقارنة أعمدة بأسماء مختلفة؟
لا تُقارَن إلا الأعمدة التي لها العنوان نفسه في الملفين، ويجب أن يستخدم الملفان الاسم نفسه لكل عمود مفتاحي. أعِد تسمية الأعمدة في أحد الملفين بأداة مطابقة أعمدة CSV أولًا.