مهدی نظارت
مهدی نظارت
خواندن ۳ دقیقه·۵ سال پیش

ورود داده ها از اکسل به اس کیو ال سرور


برنامه نویسان ، DBA ها و سایرینی که با Microsoft SQL Server سر و کله می زنن همیشه درگیر این مسئله هستن که داده هایی را از فایل اکسل به پایگاه داده Import کنند یا برعکس از SQL داده ها را شوت کنن توی اکسل . این داده ها می تونه از یک سند حسابداری ساده ، لیست مشتریان و... تشکیل شده باشه . البته اینجا بحثم راجع به Import داده ها به SQL هست .

وقتی SQL را نصب کنید و بعد از نصب ، SQL Server Management Studio یا SSMS مورد نظر را هم روی سرور یا کلاینت نصب کنید ( توی این ورژن های آخر نصب اونها جداگانه است ) می تونید از قابلیت Import داده ها توی SSMS استفاده کنید . نکته اینجاست که SQL یه Provider ( تأمین کننده ! ) قدیمی به نام Microsoft.Jet.OLEDB.4.0 برای ورود فایلهای اکسل و اکسس داره که بصورت استاندارد نصب می شه ولی تنها می تونه فایلهای اکسل یا اکسس 2003-97 را Import کنه و اگه فایلهای اکسل شما ورژن جدیدتر باشه باید آنها را به فرمت قدیمی تر Save as کنید و بعد ، از ویزارد SSMS برای ورود داده ها استفاده کنید .

چه کنیم که از این فرایند عقب گرد نجات پیدا کنیم ؟ واقعا لازمه ؟! در جواب باید بگم که به حجم کارهای شما بستگی داره . اگه این مسئله ماهانه یکبار اتفاق می افته مسلمه که نیازی به راه حل جدید نیست اما اگر رویه روتینی برای شما هست باید به فکر چاره بود ، خودم مجبور بودم این کار را بکنم ، اوایل اهمیتی نداشت اما چون عادت دارم از فایلهایی که وارد SQL می کنم برای روز مبادا و تا مدت مشخصی پشتیبان تهیه کنم ، متوجه شدم که تعداد زیادی فایل اکسل مشابه با نگارشهای ( Version ) متفاوت روی سیستم من جا خوش کردن و روز به روز مدیریت کردنشون سخت تر می شه و از طرفی Save as کردن فایل اکسل هم در فرآیند کارهای جاری به یه رویداد تکراری کسل کننده تبدیل شده .

خب راه حل :

راه حل اینه که بریم سراغ Microsoft Access Connectivity Engine (ACE) و ورژن 2016 اون را نصب کنیم . اما یه نکته ظریفی این بین هست که یه مدت من را آزار می داد ، وقتی به صفحه دانلود برید و بخواهید این درایور را دانلود کنید ، امکان دانلود درایور 32 بیت یا 64 بیت را براتون فراهم می کنه ، من ویندوزم 64 بیته ، طبیعی که میرم سراغ ورژن 64 بیت ، اون را دانلود و نصب می کنم و بعد از اون از طریق SSMS سعی به Import فایلهای اکسل می کنم که همانطور که در تصاویر بعدی می بینید به خطا بر می خورم ؟!!!!!!!

1 - کلیک راست روی دیتابیس و انتخاب گزینه Import
1 - کلیک راست روی دیتابیس و انتخاب گزینه Import
2 - انتخاب دیتاسورس ، انتخاب فایل اکسل مورد نظر و کلیک روی Next
2 - انتخاب دیتاسورس ، انتخاب فایل اکسل مورد نظر و کلیک روی Next
پیام خطا !!!!
پیام خطا !!!!

مشکل کجاست ؟ درایور درست نصب نشده ؟ در Control Panel و توی Programs and Features چک کنیم :


پس مسئله چیه ؟!!! مسئله اینه که باید درایور 32 بیت را نصب کنید! جانم ! چرا ؟ چون SSMS و SSDT ( یا SQL Server Data Tools ) اپلیکیشن های 32 بیت هستند و درایور 64 بیتی که ما نصب می کنیم با اونها جفت نیست و وقتی از طریق SSMS بخواهید داده ها را وارد کنید ورژن 32 بیت اون اجرا می شه و درایور 64 بیت نصب شده را تشخیص نمی ده .

البته بعد از نصب درایور 64 بیت اگه داخل Start Menu دنبال Data SQL Server Import and Export بگردید یه ورژن 64 بیت جدید مستقل از SSMS پیدا می کنید که فایلهای اکسل ورژن جدید را براتون Import می کنه ( پنجره ویزاردش هیچ تفاوتی با ورژن 32 بیتی نداره )، ولی اگه می خواید از این قابلیت در داخل خود SSMS استفاده کنید باید حتما نسخه 32 بیتی را هم نصب کنید . منتهی ورژن 32 بیت درایور 2016 با آفیس 64 بیت نمی خونه ! ( ای خداااااااا )و باید قید آفیس 64 بیت را بزنید:

عدم تطابق اکسس دیتابیس انجین 2016 ورژن 32 بیت با آفیس 64 بیت
عدم تطابق اکسس دیتابیس انجین 2016 ورژن 32 بیت با آفیس 64 بیت


یا ACE نگارش 32 بیت 2010 را نصب کنید ! در کمال تعجب و از داخل SSMS کار می کنه !!

اینم از مایکروسافت ، مثل اینکه همه جای دنیا آسمون همین رنگه .

sql server
شاید از این پست‌ها خوشتان بیاید