"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا لا يقبل BULK INSERT مسارات الملفات المتغيرة في الإجراءات المخزنة؟

لماذا لا يقبل BULK INSERT مسارات الملفات المتغيرة في الإجراءات المخزنة؟

تم النشر بتاريخ 2024-12-22
تصفح:633

Why Doesn't BULK INSERT Accept Variable File Paths in Stored Procedures?

الإدخال المجمع باستخدام الإجراءات المخزنة: استكشاف الأخطاء وإصلاحها

في محاولة لإدراج البيانات بشكل مجمع باستخدام إجراء مخزن، واجه المطور أخطاء في بناء الجملة. كان الهدف هو تكرار استعلام BULK INSERT العامل في الإجراء. فيما يلي تحليل للمشكلة وحلها.

تنشأ المشكلة من محاولة تمرير اسم ملف كمتغير إلى أمر BULK INSERT ضمن الإجراء المخزن. لسوء الحظ، هذه عملية غير مدعومة بواسطة BULK INSERT.

إليك مثال لمحاولة غير ناجحة باستخدام متغير:

DECLARE @filename VARCHAR(255)
SET @filename = 'e:\5-digit Commercial.csv'

BULK INSERT ZIPCodes
FROM @filename
WITH

بدلاً من ذلك، يتوقع الأمر BULK INSERT مسار ملف مضمن. للتغلب على هذا القيد، فكر في إنشاء عبارة BULK INSERT كسلسلة ذات اسم ملف ثابت وتنفيذها كـ SQL ديناميكي.

DECLARE @filepath NVARCHAR(500)
SET @filepath = N'e:\5-digit Commercial.csv'

DECLARE @bulkinsert NVARCHAR(2000)

SET @bulkinsert =
       N'BULK INSERT ZIPCodes FROM '''  
       @filepath  
       N''' WITH (FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''\n'')'

EXEC sp_executesql @bulkinsert

باستخدام SQL الديناميكي، يمكن تنفيذ العبارة التي تم إنشاؤها، وحل أخطاء بناء الجملة التي تمت مواجهتها في تنفيذ الإجراء المخزن الأصلي.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3