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

تحويل CSV إلى قاعدة بيانات SQLite

orders.csv· بيانات نموذجية15 صفًا · 8 أعمدة
أنواع القيم
يحافظ وضع النص على كل قيمة كما هي تمامًا. ومع الاكتشاف يُستخدم ⁦INTEGER⁩ و⁦REAL⁩ حيث تناسب كل القيم النوع.
orders.csv
#order_idcustomercityproductquantityunit_priceorder_datestatus
1001041عمر القحطانيتونسChair, ergonomic6144.562026-01-24refunded
2001042سارة المصريالدوحةMonitor 27"9161.362026-02-21shipped
3001043خالد الخطيبعمّانDesk lamp5170.882026-03-27shipped
4001044فاطمة الحربيدبيDesk lamp1161.162026-04-24pending
5001045نور الزهرانيعمّانNotebook A51·2026-05-02refunded
6001046هدى الدوسريالدوحةMonitor 27"2211.632026-06-17shipped
7001047 علي القحطاني عمّانCoffee beans 1kg257.052026-07-09shipped
8001048عمر المصريالدار البيضاءDesk lamp9216.892026-08-13shipped
9001049أحمد الحربيالرياضUSB-C cable5133.182026-09-01shipped
10001050يوسف الدوسريعمّانUSB-C cable4242.502026-01-22pending
11001051أحمد الشمريالقاهرةDesk lamp2217.962026-02-06refunded
12001052عمر الحسنجدةDesk lamp612.862026-03-18shipped
13001053أحمد السيددبيUSB-C cable9158.312026-04-13pending
14001054عمر الدوسريالدار البيضاءNotebook A5730.612026-05-07shipped
15001043خالد الخطيبعمّانDesk lamp5170.882026-03-27shipped

15 صفًا · 1 ملف يستخدم محرك SQLite ‏(WebAssembly) الذي يُنزَّل مرة واحدة من ⁦assets.viewcsv.app⁩. تبقى بياناتك في علامة التبويب هذه.

بعد فتح ملف CSV أو لصقه ومراجعة اسم الجدول يكفي اختيار تنزيل SQLite. تحصل على ملف قاعدة بيانات ⁦.sqlite⁩ فيه جدول واحد يضم كل الصفوف، جاهز للفتح في واجهة ⁦sqlite3⁩ أو DB Browser for SQLite أو Python أو أي مكتبة SQLite. افتراضيًا يكون كل عمود من نوع ⁦TEXT⁩، فتبقى ⁦000417⁩ كما هي ⁦000417⁩. يعمل محرك SQLite بتقنية WebAssembly في متصفحك، ولا يُرفع ملف CSV أبدًا.

طريقة تحويل CSV إلى SQLite

  1. افتح ملف ⁦.csv⁩ أو ⁦.tsv⁩ أو ⁦.txt⁩، أو أفلته على الأداة، أو الصق الصفوف. راجع الجدول في المدخلات، واضبط عند الحاجة المحدِّد أو صف العناوين أو الترميز من إعدادات الاستيراد.
  2. راجع اسم الجدول. يبدأ باسم الملف بعد تحويل المسافات وعلامات الترقيم إلى شرطات سفلية، فيصبح ⁦orders 2026.csv⁩ ⁦orders_2026⁩.
  3. اختر أنواع القيم، والمفتاح الأساسي إن أردت، وحدِّد هل تريد كتابة الخلايا الفارغة بقيمة ⁦NULL⁩.
  4. اختر تنزيل 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⁩.

CSV
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 (واجهة sqlite3)
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⁩.

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