گرفتن خروجی csv از دیتابیس با نام داینامیک – ssis

راه های زیادی برای گرفتن خروجی از دیتابیس (در مثال ما mssql) وجود داره. اگر نیاز دارید نام خروجی شما با تاریخ همون روز همراه باشه! این آموزش رو دنبال کنید. در این مقاله با استفاده از ابزار SSIS از دیتابیس خروجی در قالب فایل csv خواهیم گرفت و چون لازمه خروجی ها در روز های متفاوت ایجاد و و  ذخیره شوند در نام هر فایل تاریخ روز را قرار می دهیم. و در آخر هم فایل هایی که بیشتر از n روز از ایجادشون گذشته رو حذف خواهیم کرد.

1- در ابتدا یک پروژه Integration بسازید و نام و آدرس ذخیره شدن پروژه رو مشخص کنید.

2- در قسمت Control Flow یک Data Flow Task ایجاد کنید.

3- به قسمت Data Flow برید و برای گرفتن داده از دیتابیس (MS SQL Server)، OLE DB Source را ایجاد کنید و دابل کلیک کنید و سپس پس از ایجاد یک کانکشن یا استفاده از کانکشن موجودتون، کوئری یا نام جدول مورد نظر خود را وارد کنید.

4- یرای ذخیره خروجی در قالب فایل csv یک Flat File Destination هم در صفحه قرار دهید و OLE DB Source را به آن متصل کنید و دابل کلیک کنید.

5- گزینه Delimited رو انتخاب کنید.

6- یک فایل csv در آدرس مورد نظر ایجاد کنید.  آدرس فایل رو در کادر File قرار دهید. (اگر لازم بود که به صورت UTF-8 ذخیره کنید تا متون فارسی به درستی نمایش داده بشوند)

7- بر روی connection manager کلیک راست کنید و properties را انتخاب کنید.

8- در ابتدا به منظور این که نام ستون در ردیف اول آورده شود گزینه زیر رو در پنجره باز شده True کنید.

9- گزینه Expression رو پیدا کنید و بر روی … کلیک کنید.

10- در پنجره باز شده Connection String رو پیدا کنید و بر روی … کلیک کنید.

11- در پنجره باز شده آدرس فولدر و دایرکتوری که قصد دارید فایل در اون ذخیره بشه رو وارد کنید. فقط دقت کنید آدرس رو با دو back slash وارد کنید. مانند تصویر زیر! و همچنین در صورتی که فایل قراره بر روی یک فضای مشترک ذخیره بشه از آدرس دهی UNC استفاده کنید و مطمئن بشید کاربر اجرا کننده دسترسی لازم به آدرستون رو داشته باشه.

پس از اجرا خواهیم داشت:

تنها کاری که مونده انجام بدیم اینه در ساعت مورد نظر این package رو job کنیم و دقت کنید در صورتی که چند بار در روز آپدیت می کنید فایل overwrite خواهد شد.

حذف فایل های ایجاد شده در n روز پیش

برای پاک کردن فایل هایی که تاریخ ایجادشون بیشتر از n روز شده هم لازمه با استفاده از کد VB یا #C این کار رو انجام بدیم. که در این مثال من از VB استفاده می کنم که به نظر خودم خوندنش و نوشتنش راحت تره!

1- یک package ایجاد کنید و Script Task رو در قسمت Control Flow قرار دهید.

2- دو متغیر زیر رو ایجاد کنید.

در متغیر varDays تعداد روزهایی که لازمه به عقب برگردید رو وارد کنید. در مثال ما این مقدار 2 روز می باشد. همچنین قسمت Value از متغیر varPath رو با آدرس دایرکتوری مورد نظرتون پر کنید.

3- به پنجره Script Task وارد شوید و Visual Basic رو انتخاب کنید سپس متغیر ها رو در قسمت ReadOnly وارد کنید و در نهایت Edit Script رو انتخاب کنید.

4- پس از انتخاب Edit Script پنجره VSTA باز می شود. کد زیر رو در قسمت نشان داده شده در تصویر زیر قرار دهید و قبل از اون همه کد های نوشته بین Sub رو  پاک کنید.

در نهایت خواهیم داشت:

 

5- در قسمت import، کتابخونه IO رو به این صورت وارد کنید Imports System.IO. می تونید کتابخونه هایی که مورد استفاده نیستن رو هم پاک کنید.

5- فایل رو Save کنید و پنجره رو ببندید و پس از بازگشت به پنجره قبل (Script Task) حتما OK رو بزنید در غیر این صورت کد ها ذخیره نمی شوند.

6- برای تست هم می تونید مقدار متغیر varDays رو به 0 تغییر دهید و پس از اجرا تمام فایل ها آن روز به قبل پاک خواهند شد (یعنی همشون پس مراقب باشید اشتباها همه چی پاک نشه 😁)

 

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.

فهرست