بعد فتح ملف CSV أو لصقه ومراجعة اسم الجدول يكفي اختيار تنزيل SQLite. تحصل على ملف قاعدة بيانات .sqlite فيه جدول واحد يضم كل الصفوف، جاهز للفتح في واجهة sqlite3 أو DB Browser for SQLite أو Python أو أي مكتبة SQLite. افتراضيًا يكون كل عمود من نوع TEXT، فتبقى 000417 كما هي 000417. يعمل محرك SQLite بتقنية WebAssembly في متصفحك، ولا يُرفع ملف CSV أبدًا.
طريقة تحويل CSV إلى SQLite
- افتح ملف
.csv أو .tsv أو .txt، أو أفلته على الأداة، أو الصق الصفوف. راجع الجدول في المدخلات، واضبط عند الحاجة المحدِّد أو صف العناوين أو الترميز من إعدادات الاستيراد. - راجع اسم الجدول. يبدأ باسم الملف بعد تحويل المسافات وعلامات الترقيم إلى شرطات سفلية، فيصبح
orders 2026.csv orders_2026. - اختر أنواع القيم، والمفتاح الأساسي إن أردت، وحدِّد هل تريد كتابة الخلايا الفارغة بقيمة NULL.
- اختر تنزيل SQLite، ثم افتح الملف، مثلًا بالأمر
sqlite3 orders.sqlite ثم SELECT * FROM orders LIMIT 10;.
في أول تحويل يُنزَّل محرك SQLite (مكتبة sql.js المترجمة إلى WebAssembly) مرة واحدة من assets.viewcsv.app. وإذا فشل هذا التنزيل تعرض الأداة رسالة خطأ ويمكن المحاولة من جديد؛ ويبقى ملفك على هذا الجهاز.
لتحويل ملفات كثيرة بالإعدادات نفسها، اختر دفعة واحدة: تحويل عدة ملفات. يصبح كل ملف قاعدة بيانات مستقلة فيها جدول باسم ذلك الملف، وتُنزَّل معًا في ملف ZIP واحد. وفي التحويل دفعة واحدة يجب ألا يتجاوز كل ملف 25 ميغابايت.
ما الذي تحتويه قاعدة البيانات
جدول واحد يُنشأ بالأمر CREATE TABLE "name" (…)، فيه عمود لكل عمود في ملف CSV بالترتيب الأصلي، وتُدرج كل الصفوف في معاملة واحدة. ولا توجد فهارس أو طرق عرض أو أعمدة معرّفات إضافية.
| أسماء الجداول والأعمدة | تُستخدم كما كُتبت تمامًا وبين علامتي اقتباس مزدوجتين، فتعمل المسافات وعلامات الترقيم والكلمات المحجوزة والأسماء غير اللاتينية، ومنها العربية: يُستعلم عنها بصيغة "order date". ويصبح العنوان الفارغ Column 3 والمكرر name (2). |
|---|---|
| إبقاء كل القيم نصًا | الخيار الافتراضي. يُعرَّف كل عمود بنوع TEXT ويخزّن كل قيمة كما كُتبت تمامًا. |
| اكتشاف الأرقام وقيم true/false | العمود الذي كل قيمه غير الفارغة أعداد صحيحة بلا أصفار في البداية يصبح INTEGER؛ والأعداد العشرية التي لا تتجاوز 15 رقمًا معنويًا تصبح REAL؛ وأعمدة true/false تصبح INTEGER بالقيمتين 1 و0، لأن SQLite لا يعرف نوعًا منطقيًا. وتبقى التواريخ وكل ما عداها TEXT. |
| المفتاح الأساسي | اختياري. يُعرَّف العمود المختار PRIMARY KEY. ويجب أن تكون قيمه فريدة وغير فارغة، وإلا تتوقف الأداة قبل كتابة الملف. والمفتاح المكتشف عددًا صحيحًا يصبح INTEGER PRIMARY KEY، وهو الاسم البديل لـrowid في SQLite. |
| كتابة الخلايا الفارغة بقيمة NULL | مفعّل افتراضيًا. ويُعطَّل لتخزين الخلايا الفارغة سلسلةً نصية فارغة ''. |
تُخزَّن فواصل الأسطر وعلامات الاقتباس والفواصل الموجودة داخل قيم CSV المقتبسة داخل القيمة دون تغيير.
مشكلات شائعة في تحويل CSV إلى SQLite
- يتوقف التحويل عند المفتاح الأساسي. في العمود المختار قيمة فارغة أو مكررة. ابحث عن التكرارات بأداة التحقق من CSV أو عارض CSV، أو اختر عمودًا آخر، أو اضبط المفتاح الأساسي على «بلا».
- تعذّر تنزيل المحرك. يأتي ملف SQLite بتقنية WebAssembly من
assets.viewcsv.app. تحقّق من الاتصال أو الجدار الناري أو أداة حظر المحتوى، ثم حاول من جديد. - الدالة `SUM()` تعامل عمودًا على أنه نص. العمود من نوع
TEXT. حوّل الملف مرة أخرى مع اكتشاف الأرقام وقيم true/false؛ وإذا بقي نصًا فإحدى قيمه ليست رقمًا بسيطًا (1,234 أو 12 kg أو 007). أو حوّل نوعه في SQL: CAST(total AS REAL). - الملف أكبر من أن تعالجه هذه الأداة. يعمل التحويل إلى SQLite على ملفات حتى 25 ميغابايت و100 ألف صف و250 عمودًا ومليوني خلية. وللملف الأكبر، أنشئ برنامجًا نصيًا بأداة CSV إلى SQL التي تعالج الملفات الكبيرة تدفقيًا، وشغّله بـ
sqlite3.
الحدود والخصوصية
يجب أن يُفتح ملف CSV في مساحة العمل في المتصفح: حتى 25 ميغابايت و100 ألف صف و250 عمودًا ومليوني خلية. وتُبنى قاعدة البيانات في الذاكرة وتُصدَّر ملفًا واحدًا.
يعمل المحرك في عامل خلفي داخل علامة التبويب هذه، فتبقى الصفحة مستجيبة ويوقفه زر إلغاء. ولا يُنزَّل إلا ملف المحرك؛ أما ملف CSV وقاعدة البيانات فلا يغادران جهازك أبدًا.
مثال: ملف طلبات مفتوح في واجهة sqlite3 النصية
ملف طلبات فيه معرّفات تبدأ بأصفار وتاريخ فارغ وملاحظة من سطرين، حُوّل مع اكتشاف الأرقام وقيم true/false واسم الجدول orders وorder_id المفتاح الأساسي، ثم فُتح بواجهة sqlite3. أصبح total من نوع REAL وpaid من نوع INTEGER بالقيمتين 1 و0، بينما بقي order_id وshipped_on من نوع TEXT. ومع الخيار الافتراضي إبقاء كل القيم نصًا تكون الأعمدة الستة كلها TEXT ويحتفظ total بالقيمة 129.50.
order_id,customer,total,paid,shipped_on,note 000417,"Okafor, Ada",129.50,true,2026-04-02, 000418,Mei Tan,15,false,,"Leave at door side gate"
sqlite> .schema
CREATE TABLE "orders" ("order_id" TEXT PRIMARY KEY, "customer" TEXT, "total" REAL, "paid" INTEGER, "shipped_on" TEXT, "note" TEXT);
sqlite> SELECT order_id, total, typeof(total), paid, shipped_on, quote(note) FROM orders;
000417|129.5|real|1|2026-04-02|NULL
000418|15.0|real|0||'Leave at door
side gate'أسئلة وأجوبة
ما الفرق بين هذه الأداة وأداة CSV إلى SQL؟
تعطيك هذه الصفحة ملف قاعدة بيانات SQLite جاهزًا للفتح مباشرة. أما CSV إلى SQL فتكتب برنامجًا نصيًا من عبارات CREATE TABLE وINSERT تشغّله بنفسك، في SQLite أو PostgreSQL أو MySQL أو SQL Server، ويمكنها معالجة الملفات الأكبر من 25 ميغابايت تدفقيًا.
هل يمكن إضافة ملف CSV إلى قاعدة بيانات موجودة؟
ليس مباشرة؛ فكل تحويل ينشئ قاعدة بيانات جديدة بجدول واحد. اربطها من قاعدة بياناتك الموجودة بالأمر ATTACH 'orders.sqlite' AS src; وانسخ الصفوف بالأمر INSERT INTO … SELECT * FROM src.orders;.
لماذا تُخزَّن true وfalse بالقيمتين 1 و0؟
لا يملك SQLite فئة تخزين منطقية؛ فالقيم المنطقية أعداد صحيحة. مع اكتشاف الأرقام وقيم true/false تصبح true 1 وfalse 0. أما في وضع النص فتبقيان السلسلتين true وfalse.