ایجاد فایل از طریق sql و نوشتن متن فارسی در آن
با سلام خدمت همه اساتید و دوستان محترم
من از طریق sql فایلی در یکی از درایوها ایجاد میکنم و اطلاعات داخل آن می نویسم. اما نکته ای که وجود دارد این است که من فقط می توانم متون انگلیسی را در آن بنویسم. وقتی فارسی وارد میکنم فایل خالی ایجاد میشود. در پروسیجری که نوشتم نوع متغیر متن که به آن ارسال می گردد از نوع nvarchar است و هنگام ارسال اطلاعات کاراکتر N را قبلش می نویسم. باز هم بعد از اجرای پروسیجر و ارسال متن فارسی فایل خالی است.
ممنون میشم اگر راهنمایی بفرمایید.
8 پاسخ
سلام وقت بخیر.میشه بگید ورودی @file و @Typle که از پروسیجر میاد چی هستن؟؟
سلام، کوئری مورد استفادتون رو هم بزارید لطفاً.
سلام
وقت بخیر
برای این سوال من راه حل پیدا کردم. باید در کد متد writeToFile تغییر کوچکی داده شود به صورت زیر:
DECLARE @OLE INT
DECLARE @FileId INT
EXECUTE sp_OACreate 'Scripting.FileSystemObject',@OLE OUT
EXECUTE sp_OAMethod @OLE, 'OpenTextFile', @FileId OUT, @File,@TYPE,1,-1
EXECUTE sp_OAMethod @FileId, 'WriteLine', Null, @Text
EXECUTE sp_OAMethod @FileId, 'Close'
EXECUTE sp_OADestroy @FileId OUT
EXECUTE sp_OADestroy @OLE OUT
متد sp_OAMethod آرگومان ورودی دیگری دارد که اگر مقدار -1 به آن بدهیم فایل متنی را به صورت یونیکد ایجاد میکند.
با تشکر
سلام، بنده هم این مورد و هم راهکار powershell رو چک کردم، اما باز هم کاراکترهای unicode رو ثبت نمیکنه و جایی هم ندیدم راهکاری براش ارائه شده باشه. شاید دوستان دیگه راهکارش رو بدونن.
سلام
پروسیجر نوشتن در فایل :
/****** Object: StoredProcedure [dbo].[WriteToFile] Script Date: 1/3/2018 3:06:33 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[WriteToFile] @File VARCHAR(2000), @Text NVARCHAR(2000), @TYPE INT AS BEGIN DECLARE @OLE INT DECLARE @FileId INT EXECUTE sp_OACreate 'Scripting.FileSystemObject',@OLE OUT EXECUTE sp_OAMethod @OLE, 'OpenTextFile', @FileId OUT, @File,@TYPE,1 EXECUTE sp_OAMethod @FileId, 'WriteLine', Null, @Text EXECUTE sp_OADestroy @FileId EXECUTE sp_OADestroy @OLE END; ------------------------- اینم کوئری که دارم ایجاد فایل رو فراخوانی میکنم. begin DECLARE @Path VARCHAR(2000) DECLARE @Txt NVARCHAR(2000) DECLARE @Per_No int DECLARE @Full_Name NVARCHAR(100) SET @Path = 'C:\test.txt' SET @Per_No = 223344 SET @Full_Name = N'آزاده' SET @Txt = N'Personal Code:' + CAST(@Per_No as nvarchar(4)) EXEC WriteToFile @Path,@Txt,2 SET @Txt = N'Full Name: N' + @Full_Name EXEC WriteToFile @Path,@Txt,8 end;
قسمت بالاست. بالای خط چین.
کد WriteToFile رو هم بزارید لطفاً.
سلام وقت بخیر
راه حلی برای این سوال من وجود نداشت؟