الانتقال إلى الأداة
ViewCSV
الملفات تبقى على جهازك

التحقق من ملف CSV

signups.csv· بيانات نموذجية7 صفوف · 6 أعمدة
قواعد الأعمدة (اختيارية)
تُحفظ القواعد بتنسيق ⁦Table Schema JSON⁩ ‏(Frictionless Data)، لتتمكن أدوات أخرى من قراءتها أيضًا.
الأخطاء: 4، التحذيرات: 2
التقرير
الصفالعمودالمشكلةالقيمة
1nameتبدأ القيمة أو تنتهي بمسافات. محمد العلي
2emailالقيمة لا تطابق تنسيق «⁨عنوان بريد إلكتروني⁩».not-an-email
2signup_dateالقيمة ليست من النوع «⁨تاريخ (⁦YYYY-MM-DD⁩)⁩».2026-02-30
6emailالقيمة لا تطابق تنسيق «⁨عنوان بريد إلكتروني⁩».N/A
6signup_dateالقيمة ليست من النوع «⁨تاريخ (⁦YYYY-MM-DD⁩)⁩».11/03/2026
7nameتبدأ القيمة أو تنتهي بمسافات.نور الحربي

تُحسب أرقام الصفوف من صفوف البيانات بعد العناوين، ولا يبدأ فاصل السطر داخل علامتي اقتباس صفًا جديدًا.

يُفحص ملف CSV عند فتحه من حيث البنية: مطابقة كل سجل لعدد حقول صف العناوين، والعناوين الفارغة والمكررة، وعلامات الاقتباس الشاردة، ونهايات الأسطر المختلطة، والأسطر الفارغة. ويمكن إضافة قواعد اختيارية لكل عمود، مثل عدد صحيح أو تاريخ أو بريد إلكتروني أو قيمة مطلوبة أو فريدة أو قيم مسموح بها أو تعبير نمطي، فتُدرج كل مشكلة مع صف البيانات والعمود والقيمة. تعتمد القواعد مفردات Table Schema من Frictionless. يُفحص الملف في متصفحك ولا يُرفع.

طريقة التحقق من ملف CSV

  1. افتح ملف ⁦.csv⁩ أو ⁦.tsv⁩ أو ⁦.txt⁩. يُكتشف المحدِّد وعلامة ترتيب البايت لـ⁦UTF-8⁩ أو ⁦UTF-16⁩؛ وإذا بدت الأعمدة خاطئة يمكن اختيار محدِّد آخر أو ترميز قديم من إعدادات الاستيراد.
  2. يمكن اختياريًا إدخال عدد الأعمدة الذي يجب أن يكون في كل سجل. وإذا تُرك فارغًا يُعتمد عدد أعمدة صف العناوين.
  3. يمكن اختياريًا إضافة قواعد للأعمدة المهمة: النوع، وهل القيمة مطلوبة أو يجب أن تكون فريدة، والقيم المسموح بها، والحد الأدنى والأقصى، ونطاق الطول، أو نمط.
  4. شغّل الفحص وراجع التقرير: الأخطاء أولًا ثم التحذيرات. أصلِح القيم في محرر CSV أو رتّبها بأداة تنظيف CSV، ثم أعِد التحقق.

لمعرفة أنواع كل عمود وقيمه الفارغة والمميزة قبل كتابة القواعد، استخدم الوصف الإحصائي للملف في تحليل CSV.

فحوص البنية

عدد الحقول (خطأ)في السجل حقول أكثر أو أقل من صف العناوين، أو من العدد الذي أدخلته. يتوقع RFC 4180 أن يكون لكل السجلات العدد نفسه من الحقول؛ وعدم التطابق يعني عادةً محدِّدًا خارج علامات الاقتباس أو قيمة مفقودة.
عنوان فارغ (خطأ)اسم عمود فارغ أو لا يحتوي إلا مسافات. ويذكر التقرير موضعه.
عنوان مكرر (خطأ)اسما عمودين متطابقان بعد إزالة المسافات. ويذكر التقرير الموضعين.
علامة اقتباس شاردة (تحذير)تظهر علامة اقتباس داخل قيمة غير محاطة بعلامات اقتباس، مثل ⁦5" screen⁩. تبقى القيمة كما كُتبت، ويذكر التقرير عددها في الملف.
نص بعد علامة الاقتباس الختامية (تحذير)أحرف تلي علامة الاقتباس الختامية قبل المحدِّد التالي، كما في ⁦"abc"x⁩.
نهايات أسطر مختلطة (تحذير)يخلط الملف بين نهايات السجلات ⁦CRLF⁩ و⁦LF⁩ و⁦CR⁩. ويعدّ التقرير كل نوع.
أسطر فارغة (تحذير)أسطر فارغة بين السجلات. تُتخطّى ويعدّها التقرير.
مسافات محيطة (تحذير)قبل نص القيمة أو بعده مسافات. مفعّل افتراضيًا، ولا يُبلَّغ عن القيم التي لا تحتوي إلا مسافات.

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

قواعد الأعمدة

النوع: عدد صحيحإشارة اختيارية وأرقام فقط، مثل ⁦-12⁩ أو ⁦007⁩. يُبلَّغ عن القيم التي تتجاوز ⁦±9,007,199,254,740,991⁩، لذا تُستخدم قاعدة نصية مع نمط للمعرّفات الطويلة.
النوع: رقمصيغة عشرية بسيطة بنقطة، مثل ⁦3.5⁩ أو ⁦-0.25⁩ أو ⁦1e3⁩. دون فواصل آلاف أو عملات أو مسافات محيطة.
النوع: منطقي⁦true⁩ أو ⁦false⁩ بأي حالة أحرف. ويُبلَّغ عن ⁦1⁩ و⁦0⁩ و⁦yes⁩ و⁦no⁩.
النوع: تاريخ، تاريخ ووقتتاريخ تقويمي حقيقي بصيغة ⁦YYYY-MM-DD⁩، فيُبلَّغ عن ⁦2024-02-30⁩. ويضيف «تاريخ ووقت» وقتًا (⁦2024-03-05T09:30⁩، مع ثوانٍ وإزاحة ⁦Z⁩ أو ⁦+02:00⁩ اختيارية).
النوع: نص بتنسيقبريد إلكتروني (فحص بسيط لشكل ⁦name@domain.tld⁩ لا لإمكانية التسليم)، أو URI (عنوان URL مطلق مع البروتوكول)، أو UUID (الإصدارات من 1 إلى 8).
مطلوبيجب ألا تكون القيمة فارغة. ودون هذه القاعدة تجتاز القيم الفارغة كل القواعد الأخرى.
فريدلا يجوز تكرار أي قيمة في العمود. ويذكر التقرير الصف الذي ظهرت فيه أول مرة. ولا تُقارَن القيم الفارغة.
القيم المسموح بهايجب أن تساوي القيمة إحدى القيم المدرجة تمامًا، بما في ذلك حالة الأحرف والمسافات.
الحد الأدنى، الحد الأقصىحدود شاملة لأعمدة الأعداد الصحيحة والأرقام، أو تواريخ ISO لأعمدة التاريخ والتاريخ والوقت.
الحد الأدنى والأقصى للطوليُعدّ بأحرف Unicode، فيُحسب كل من ⁦é⁩ و⁦日⁩ حرفًا واحدًا.
نمطتعبير نمطي يجب أن يطابق القيمة كاملة كما يشترط Table Schema؛ مثل ⁦[A-Z]{2}\d{4}⁩. والمطابقة حساسة لحالة الأحرف.

تنطبق القاعدة على العمود الذي يطابق عنوانه اسمها تمامًا؛ وتُتخطّى قواعد الأعمدة غير الموجودة في الملف. ويمكن حفظ القواعد في ملف JSON بصيغة Table Schema وتحميلها مرة أخرى للتصدير التالي؛ وتُتجاهَل الأنواع والمفاتيح غير المعروفة في المخطط المحمَّل.

قراءة التقرير

  • تعدّ أرقام الصفوف سجلات البيانات بعد صف العناوين (صف العناوين هو الصف 0). والقيمة التي فيها فاصل سطر داخل علامات اقتباس تبقى سجلًا واحدًا، لذا قد يختلف رقم الصف عن رقم السطر في محرر النصوص.
  • تذكر كل مشكلة عمودها وتقتبس قيمتها، فيمكن البحث عنها في عارض CSV أو في المحرر.
  • الأخطاء تكسر البنية أو قاعدة ما؛ أما التحذيرات فتشير إلى بيانات صالحة من حيث CSV لكنها كثيرًا ما تسبب مشكلات عند الاستيراد.
  • تُدرج 5 آلاف مشكلة على الأكثر. وبعد ذلك يستمر عدّ الإجمالي لكل نوع من المشكلات، وتُوسم القائمة بأنها مقتطعة.

الحدود والخصوصية

يقرأ المدقق سجلًا واحدًا في كل مرة، لذا تُفحص الملفات التي تتجاوز الحد التفاعلي البالغ 25 ميغابايت تدفقيًا في عامل خلفي، مع عرض التقدم وإمكانية الإلغاء. وفي الوضع التدفقي تُكمَّل حاليًا السجلات التي فيها حقول أقل من صف العناوين قبل الفحص، فلا يُبلَّغ عن خطأ عدد الحقول إلا للسجلات التي فيها حقول زائدة.

يجري التحقق في متصفحك، ولا يُرفع ملف CSV إلى أي خادم.

مثال

ملف تسجيلات مُصدَّر فُحص بأربع قواعد: id عدد صحيح مطلوب وفريد؛ وemail نص مطلوب بتنسيق بريد إلكتروني؛ وsignup_date تاريخ؛ وplan يقبل ⁦basic⁩ و⁦pro⁩ و⁦team⁩. الناتج تقرير المدقق، مشكلة في كل سطر بعد الملخص: تاريخ مستحيل، وبريد بلا لاحقة نطاق، و⁦Pro⁩ بحالة أحرف خاطئة، ومعرّف مكرر، وبريد مفقود، و⁦team ⁩ بمسافة في آخرها، وهي تحذير وقيمة غير مسموح بها في آن واحد.

CSV
id,email,signup_date,plan
1,ana@example.com,2024-02-30,pro
2,kim@example,2024-03-01,Pro
2,bao@example.com,2024-03-04,basic
4,,2024-03-05,team 
تقرير التحقق
{"rows":4,"errors":6,"warnings":1,"truncated":false}
{"code":"type","row":1,"column":"signup_date","value":"2024-02-30","params":{"type":"date"}}
{"code":"format","row":2,"column":"email","value":"kim@example","params":{"format":"email"}}
{"code":"enum","row":2,"column":"plan","value":"Pro","params":{"allowed":"basic, pro, team"}}
{"code":"unique","row":3,"column":"id","value":"2","params":{"first":2}}
{"code":"whitespace","row":4,"column":"plan","value":"team ","params":{}}
{"code":"required","row":4,"column":"email","value":"","params":{}}
{"code":"enum","row":4,"column":"plan","value":"team ","params":{"allowed":"basic, pro, team"}}

أسئلة وأجوبة

لماذا يُبلَّغ عن قيمة فيها مسافات رغم وجودها في قائمة القيم المسموح بها؟

تقارن القواعد القيمة كما كُتبت تمامًا دون إزالة المسافات، فـ⁦team ⁩ ليست ⁦team⁩. أزِل المسافات من العمود بأداة تنظيف CSV أو أصلِح التصدير.

هل يغيّر التحقق ملفي؟

لا. يقرأ الملف فقط ويبلّغ بما يجده. والإصلاح يكون في المحرر أو في النظام المصدر.

هل يمكن إعادة استخدام القواعد نفسها لكل تصدير شهري؟

نعم. احفظ القواعد في ملف JSON بصيغة Table Schema وحمّله في المرة التالية؛ إذ تُربط القواعد بالأعمدة حسب الاسم.

المعايير والمراجع