PDA

View Full Version : عدم پیدا نمودن فایل csv توسط sql



khoshblagh
چهارشنبه 20 آبان 1394, 22:53 عصر
با سلام خدمت دوستان
من به کمک اساتید این تالار توانستم با کد زیر اطلاعاتی را از یک فایل csv به داخل جدولی در sql واکشی نمایم.البته در این حالت هم sql و هم فایل csv در یک رایانه قرار داشتند. اما وقتی بصورت کلاینت سروری (برنامه در یک رایانه و sql در سرور قرار داشت ) پیامی خطایی مبنی بر اینکه sql نمیتواند فایل مورد نظر را پیدا نماید. با جستجو در نت متوجه شدم که sql به دنبال فایل مورد نظر در سرور میگردد ،لذا از آنجائیکه فایل csv بروی رایانه کلاینت میباشد لذا sql قادر به پیدا نمودن فایل نمیباشد.در یک سایتی عنوان شده بود که در این حالت باید از مدل UNC path استفاده شود. البته 3 نمونه کد هم ارائه شده بود،ولی من نتوانستم از آنها استفاده نمایم. راه حل آن چگونه میباشد؟ ضمنا در زیر تصویر خطا و همچنین توضیح مختصر ضمیمه میباشد. متشکرم



cmdImportData .CommandText:='BULK INSERT dbo.tblImportData FROM '+
QuotedStr(edtCSVFileName.Text)+
' WITH (FIELDTERMINATOR='';'''+
',CODEPAGE = ''1256'''+
',FirstRow=2'+
',ROWTERMINATOR = ''\n'')';
cmdImportData.CommandType :=cmdText;
cmdImportData.Execute ;




136664

The file needs to be accessable on the server. The file path is relative to the server, not your PC. Also, if you are trying to use a share or a mapped drive it will not work. You need to use the UNC path.

UNC Name Examples

\\teela\admin$ (to reach C:\WINNT)
\\teela\admin$\system32 (to reach C:\WINNT\system32)
\\teela\temp (to reach C:\temp)

یوسف زالی
شنبه 23 آبان 1394, 10:01 صبح
سلام.
اس کیو ال دنبال فایل در آدرس جایی که نصبه می گرده.
اگر از سمت سرور نمی تونید فولدر های کلاینت ها رو ببینید، نمی تونید بالک اینسرت کنید.
اگر هدف شما درج محتوای یک فایل در جداوله، استفاده از XML خیلی بهتر و منعطف تره.
معایب csv رو هم نداره.

khoshblagh
سه شنبه 26 آبان 1394, 22:31 عصر
با تشکر از پاسختان
بهترین راه برای انتقال اطلاعات که کاربر دچار مشکل نشود چیست؟ آیا فرضا اطلاعات در سمت کلاینت در بانک اکسس ریخته و از آنجا نسبت به انتقال به بانک sql اقدام نمود و یا اینکه فایل را مثلا با ftp به سرور انتقال و از همان کد بالا استفاده نمود؟ لطفا دز این خصوص راهنمایی بفرمائید. متشکرم

یوسف زالی
چهارشنبه 27 آبان 1394, 00:05 صبح
دو حالت داره:
همزمان به هر دو دی بی کانکت هستید، که خب کاری نداره
یا این که از اولی می ریزید تو فایل و فایل رو می فرستید. برای این کار بهترین راه همونیه که بالاتر گفتم،
خروجی رو در ایکس ام ال بریزید، در مقصد فایل رو با دلفی بخونید و به عنوان یک پارامتر به اس کیو ال بفرستید، در اس کیو ال هم همه فایل رو به یکباره به جداول اینسرت کنید، با این روش حتی به سادگی می تونید جداول مستر - دیتیل رو انتقال بدید.