كيفية استخدام مولّد جمل SQL INSERT
- الصق الصفوف (السطر الأول = أسماء الأعمدة) أو مصفوفة JSON.
- أدخل اسم الجدول واختر اللهجة ونمط الجمل.
- انسخ جمل INSERT المولَّدة.
مزايا مولّد جمل SQL INSERT
- قبول CSV/TSV مع صف ترويسة أو مصفوفة JSON من الكائنات
- استنتاج تلقائي لأنواع الأعمدة من أجل اقتباس صحيح (الأرقام والقيم المنطقية والتواريخ وNULL)
- INSERT متعدد الصفوف مع التجميع في دفعات، أو جملة واحدة لكل صف
- صياغة MySQL وPostgreSQL وSQL Server وOracle (باستخدام INSERT ALL) وSQLite
- اقتباس المعرّفات: عند الحاجة فقط، أو دائماً، أو أبداً
- تغليف اختياري ضمن معاملة (transaction)
مثال على مولّد جمل SQL INSERT
صفّان إلى جملة INSERT متعددة الصفوف
الإدخال:
id,name,active
1,Layla,true
2,Omar,falseالنتيجة:
INSERT INTO users (id, name, active) VALUES
(1, 'Layla', 1),
(2, 'Omar', 0);الأسئلة الشائعة حول مولّد جمل SQL INSERT
ما صيغ الإدخال المقبولة؟
CSV أو TSV مع صف ترويسة (مفصولة بفاصلة أو فاصلة منقوطة أو علامة جدولة أو شريط عمودي — تُكتشف تلقائياً) ومصفوفات JSON من الكائنات. وتُسطَّح كائنات JSON المتداخلة إلى أسماء أعمدة بصيغة column_subcolumn.
كيف تُقتبس القيم؟
تُستنتج أنواع الأعمدة من البيانات: تبقى الأرقام بلا اقتباس، وتتحول القيم المنطقية إلى TRUE/FALSE أو 1/0 حسب اللهجة، وتصبح الخلايا الفارغة وNULL قيمة NULL، ويوضع كل ما عدا ذلك بين علامتي اقتباس مفردتين مع تهريب علامات الاقتباس. فعّل «اقتباس كل قيمة كنص» (Quote every value as text) لتعطيل الاستنتاج.
لماذا تُجمَّع الصفوف في دفعات؟
قد تتجاوز جمل INSERT متعددة الصفوف الكبيرة حدود الحزم أو المعاملات. يسمح SQL Server بما لا يزيد عن 1000 صف لكل INSERT … VALUES؛ ويقسّم حجم الدفعة الصفوف إلى عدة جمل. أما Oracle فتستخدم صياغة INSERT ALL تلقائياً.
هل يمكنني توليد بيانات أولية (seed) دون ملف؟
نعم — اكتب CSV صغيراً يدوياً، أو استخدم أدوات بيانات الاختبار لتوليد CSV والصقه هنا.
ملاحظات تقنية
تُطبَّع ترويسات الأعمدة إلى معرّفات: يزيل تفكيك NFKD علامات التشكيل اللاتينية، ويُفصل camelCase، ويصير ما هو خارج [A-Za-z0-9_] شرطة سفلية، ويُسبق الرقم البادئ بـ _، ثم يُصغَّر الناتج ويُقطع عند 63 محرفاً (حدّ PostgreSQL). ولا يُقتبس المعرّف تلقائياً إلا إذا خالف ^[A-Za-z_][A-Za-z0-9_]*$ أو كان كلمة محجوزة — بعلامات backtick في MySQL، وبالأقواس المربعة في SQL Server، وبعلامات مزدوجة فيما عداهما، والأسماء المنقّطة جزءاً جزءاً. أما اسم الجدول فيُقتبس ولا يُعاد كتابته أبداً.
يدمج الاستنتاج لكل عمود الأنواع: تتّسع الرقمية integer → bigint → decimal، ويعطي date مع datetime نوع datetime، وتصير الخلائط الأخرى سلاسل. تبقى 007 سلسلة، وتُنسخ القيم الرقمية حرفياً (يحتفظ 1.50 بصفره)، وتتحول القيم الفارغة وnull وN/A و\N و- إلى NULL. ولا تظهر TRUE/FALSE إلا في PostgreSQL و1/0 فيما عداها. وتُضاعف علامة الاقتباس المفردة؛ ويضاعف MySQL الشرطة المائلة العكسية، ويسبق SQL Server النص غير ASCII بـ N، ويتلقى Oracle قيم DATE '…' وTIMESTAMP '…'.