طريقة دمج عدة ملفات CSV
أداة تدمج عدة ملفات CSV في جدول واحد، إما بإلحاق صفوف ملف تحت آخر حين تتطابق الأعمدة، أو بربط الملفات عبر عمود مشترك كرقم العميل. تعمل داخل متصفحك مباشرة دون رفع الملفات لأي خادم، وتناسب من يجمع تصديرات دورية من أنظمة متعددة في تقرير واحد موحّد.
شغّل الأداة مجانًا
تعمل هذه الأداة داخل متصفحك — مجانًا، ولا تُرسل بياناتك إلى أي خادم
إلحاق الصفوف مقابل الربط بعمود مشترك
الإلحاق يناسب ملفات تحمل الأعمدة نفسها بالضبط من مصادر مختلفة، كتصدير مبيعات شهري من كل فرع يُجمَع في جدول سنوي واحد؛ تُوضَع صفوف كل ملف تحت صفوف الملف الآخر مباشرة دون تكرار العناوين. أما الربط بعمود مشترك فيناسب ملفين بأعمدة مختلفة تمامًا يجمعهما حقل واحد، كملف عملاء وملف طلبات يربطهما رقم العميل؛ تُدمَج الأعمدة من الملفين معًا في صف واحد لكل عميل مشترك بينهما، تمامًا كما يحدث في استعلام ربط بين جدولين في قاعدة بيانات.
ماذا يحدث عند اختلاف ترتيب الأعمدة أو أسمائها
عند الإلحاق، تُطابَق الأعمدة حسب اسمها لا موضعها، فلا يهم إن كان ترتيب الأعمدة مختلفًا بين الملفات ما دامت الأسماء متطابقة. عمود موجود في ملف وغائب في آخر يُدرَج في الناتج بقيمة فارغة للملف الذي لا يحمله، فلا يُفقَد أي عمود موجود فعليًا في أحد المصادر. عند الربط بعمود مشترك، السجلات التي لا تجد تطابقًا في الملف الآخر تُدرَج بحقول فارغة بدل استبعادها بصمت من النتيجة النهائية دون أي تنبيه واضح.
الاستخدام من الصفحة مباشرة
ارفع الملفات، اختر طريقة الدمج، وانسخ النتيجة أو نزّلها. تجري المعالجة داخل متصفحك: لا تغادر الملفات جهازك، ولا حدّ لعدد المرات، ولا حاجة لتسجيل. تناسب ملفات تصل حتى 25 MB إجماليًا دون أي تعقيد، وتعمل من الجوال بالطريقة نفسها التي تعمل بها من الحاسوب. يمكن رفع أكثر من ملفين دفعة واحدة، فيدمج الجميع في جدول ناتج واحد بترتيب تختاره أنت بنفسك.
الأتمتة عبر الـAPI لتقارير دورية
من يجمع تصديرات من عدة فروع أو أنظمة كل أسبوع يحتاج الدمج ضمن مسار عمل آلي، لا رفعًا يدويًا كل مرة. نفس المحرك متاح عبر الـAPI بسعر ثابت قدره $0.002 لكل ألف صف في الناتج، دون اشتراك شهري، مناسب لنظام يجمع مبيعات كل فروع الشركة في تقرير أسبوعي واحد. يبقى منطق الدمج نفسه — إلحاقًا أو ربطًا — ثابتًا بين كل استدعاء آلي، فلا يحتاج ضبطًا يدويًا متكررًا.
حالات الاستخدام
تقرير مبيعات موحّد من عدة فروع
تجمع شركة الواحة للتجارة المحدودة تصدير مبيعات أسبوعي من ثلاثة فروع، وتدمجها بالإلحاق في جدول واحد قبل إعداد التقرير الأسبوعي للإدارة.
ربط بيانات عملاء بطلباتهم
يربط فريق شركة الخليج الرقمية ملف بيانات العملاء بملف الطلبات عبر رقم العميل المشترك، ليحصل على جدول واحد يعرض كل طلب مع بيانات صاحبه كاملة.
دمج سجلات حضور من مواقع مقاولات متعددة
تدمج مؤسسة النخيل للمقاولات سجلات حضور العمال من عدة مواقع مشاريع منفصلة في جدول شهري واحد لحساب الرواتب.
الأسئلة الشائعة
ما الفرق بين الإلحاق والربط بعمود مشترك؟
الإلحاق يضع صفوف ملف تحت آخر حين تتطابق الأعمدة؛ الربط يدمج أعمدة ملفين مختلفين في صف واحد عبر عمود مشترك بينهما.
ماذا يحدث لعمود موجود في ملف وغائب في آخر؟
يُدرَج في الناتج، وتبقى قيمته فارغة في الملف الذي لا يحمله.
هل الأداة مجانية؟
نعم، داخل المتصفح بلا حدّ وبلا تسجيل. المدفوع فقط عبر الـAPI بسعر $0.002 لكل ألف صف.
هل تُرسل الملفات إلى خادم؟
لا، عند الاستخدام من هذه الصفحة تجري المعالجة داخل متصفحك فقط.
كم عدد الملفات التي يمكن دمجها دفعة واحدة؟
لا حدّ صارم لعدد الملفات، طالما الحجم الإجمالي لا يتجاوز 25 ميغابايت.
ماذا يحدث للسجلات التي لا تجد تطابقًا عند الربط؟
تُدرَج بحقول فارغة للجهة التي لم يُعثَر لها على تطابق، بدل استبعادها من النتيجة.
هل يعمل من الجوال؟
نعم، بالطريقة نفسها التي يعمل بها من الحاسوب.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/data/merge-csv \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"…"}'const res = await fetch("https://api.kit.forhosting.com/data/merge-csv", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "…"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/merge-csv",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "…"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/merge-csv", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"…"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"…"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/merge-csv", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "…"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.merge_csv",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 25 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |