الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تصدير البيانات من جدول إلى ملف نصي باستخدام T-SQL

مغلق
بدأه imadouzoun في 11 مارس 2006 · 0 رد · 1,611 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1

السلام عليكم يا إخواني الكرام سأحاول أن أعمل مثال حول تصدير البيانات من جدول إلى ملف نصي باستخدام T-SQL.. ولكن هناك أمر يجب أن يعرفه قارئ المثال ..

و هو أنني سأتعامل مع المؤشرات في المثال التالي و المؤشرات قد يطول شرحها شوي و لكن سأحاول الإجابة على الأسئلة حول المثال و توضيح ما قد يصعب فهمه إن شاء الله .. ;)

ليكن لدينا جدول Employee_TB جدول الموظفين على سبيل المثال .

وفيه حقلين الإسم و الرقم ___________ Name , Id حيث حقل الـ Id من نوع Int عدد صحيح .

Create Table Employee_TB(Id Int , Name Nvarchar(50))

ندخل بعض القيم فيه للتجربة( من أجل المثال ) .

Insert Into Employee_TB  Values(1 , 'Ahmad')
Insert Into Employee_TB  Values(12 , 'imad')
Insert Into Employee_TB  Values(123 , 'saleh')
Insert Into Employee_TB  Values(1234 , 'muhammad')

أولاً : إليك الدالة التالية : سيتوضح عملها عند الإختبار ..

Create Function Number_With_Fixed_Length(
  @Number Nvarchar(255) , -- The number you want fit
  @length TinyInt )
Returns Nvarchar(255)
Begin 
	if(@length <= len(LTrim(RTrim(@Number))) )
  Return @Number  
	-- ending the function and return the number as string
	-- because its length is suitable

	Declare @freq Int , @Text Nvarchar(255)
	Set @Text = @Number
	Set @freq = @length - len(@Text)
	-- len Returns the length of number
	-- Ex: 2 length of 21   

	Declare @i int , @Zeros Nvarchar(4)
	Select @i =0 , @Zeros = ''
	while @i < @freq
	Begin
  Set  @Zeros = @Zeros + '0'
  Set @i = @i + 1
	End

	Set @Text = @Zeros + @Text
	Return @Text 
End

-------------------- إختبار

print dbo.Number_With_Fixed_Length('12',5)

ثانياً : إجرائية الإضافة للملف النصي :

CREATE PROCEDURE sp_AppendToFile(@FileName varchar(255), @Text1 varchar(255)) AS
DECLARE @FS int, @OLEResult int, @FileID int

-- (.. مثلاً IO) للتعامل مع ملفات خارجية  Stream  إنشاء كائن شبيه بالـ  
-- @FS  سوف تعيد مقبض للتعامل مع المجرى وهو هنا Sp_OACreate طبعاً الدالة 

EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUT
IF @OLEResult <> 0 PRINT 'Scripting.FileSystemObject'

-- sp_OAMethod
-- "هده كـ "إفتح الملف Stream سنستخدم الدالة هده لإرسال أمر معين للـ 
--  @FileID مع العملية "فتح ملف" ستعيد مقبض لاستخدامه في الكتابة داخل الملف كما سنرى   sp_OAMethod أيضاً الدالة

execute @OLEResult = sp_OAMethod @FS, 'OpenTextFile', @FileID OUT, @FileName, 8, 1
IF @OLEResult <> 0 PRINT 'OpenTextFile'

--Write Text1
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, @Text1
IF @OLEResult <> 0 PRINT 'WriteLine'

-- و لتدمير المجرى sp_OADestroy استخدام الكائن لإغلاق الملف المفتوح 

EXECUTE @OLEResult = sp_OADestroy @FileID
EXECUTE @OLEResult = sp_OADestroy @FS

ثالثاً: تصدير الجدول Employee_TB إلى الملف المحدد في الإجرائية التالية : C:\T.Txt

Create Proc Export_Employee_Table
AS

Declare @id Nvarchar(50) , @Name Nvarchar(50)
 -- to put the value into 
 -- them comming from The cursor
Declare @Columns Nvarchar(1000)
 -- to combine the columns in a variable

Declare C Cursor For 
  Select dbo.Number_With_Fixed_Length(Cast(id As Nvarchar(255)),4) , Name From Employee_TB
Open C
Fetch Next From C Into @id , @name 
 -- fetch values from the record into variables
  While @@Fetch_Status = 0
  Begin
    Set @Columns =  @id + ',' + @Name --  Like :  0025,Ahmad
    Exec sp_AppendToFile @FileName = 'C:\T.Txt' , @Text1 = @Columns 
    -- Calling the procedure sp_AppendToFile to insert the values
	Fetch Next From C Into @id , @name 
  End
Close C
DeAllocate C
Go

----------------------- إختبار

Export_Employee_Table

تم تعديل هذه المشاركة بواسطة imadouzoun في 11 مارس 2006 في 05:27

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

هذا الموضوع مغلق.

مواضيع مشابهة