مهاجرت از mysql به postgresql بدون ازدست رفتن اطلاعات

سلام دوستان. وقت بخیرمیخوایم توی این نوشته/آموزش/مقاله/هرچی که اسمش هست یاد بگیریم که چطوری بدون ازدست رفتن اطلاعات از mysql به postgresql مهاجرت کنیم.اگه توی نت سرچ کنیم چنتا روش مختلف میاره که خب هم وقتتونو میگیره هم یه عالمه وقتتونو میگیره.من شخصا 3 روزه درگیرش هستم و کلی وقتم رو گذاشتم و تا نیم ساعت قبل از نوشتن این مطلب درگیرش بودم و انقد بهم سخت گذشت که اومدم زودتر بنویسمش که بلکه ینفر دیگه زودتر راحت شه!داستان از اونجایی شروع شد که من یه پروژه جنگو با mysql داشتم و خب همونطور که میدونیم توی جنگو mysql به خوبیpostgresql عمل نمیکنه و سرعتش کمتره( نمیگم mysql سرعتش کمه!‌توی جنگو اینطوریه)حالا شما هم به هر علتی ممکنه این مشکل رو توی هر پروژه ای داشته باشین.بریم سراغ اصل مطلب.اول بگم که مهم نیست سیستم عاملتون چی باشه مال من گنو/لینوکس توزیع مانجارو هست .اما توی ویندوز هم میتونید اینکارو انجام بدین.اول نیاز داریم که موارد زیر توی سیستمتون نصب باشه:JDK 1.8 and above (Java Development Kit)libwebkitgtk-1.0-0 (لینوکس)حالا باید نرم افزار pentaho Data Integration رو دانلود و نصب بکنیم.لینکش هم این هست:https://sourceforge.net/projects/pentaho/files/Pentaho%208.1/client-tools/pdi-ce-8.1.0.0-365.zip/download?use_mirror=netcologneهم ویندوز و هم لینوکس باید همینو دانلود و نصب کنن. طبیعتا من قرار نیست نصبش رو یادتون بدم نصبش خیلی آسون هست و آموزشش هم اینجا هست:https://help.pentaho.com/Documentation/8.0/Setup/Installation/Tools/PDI_Client_and_pluginsاگر خاستین زرنگی کنید و برید از snap نصب کنید خب باید بگم که کور خوندید و قراره به ارور بخوریم.بعد از نصب برنامه رو اجرا کنید و مراحل زیر رو دنبال کنید.از سربرگ fileیدونه job بسازیدیه کانکشن به دیتابیس اول ینی mysql بزنید! از این مسیر: Tools -> Wizard -> Create database connectionحالا باز مثل مرحله قبل به دیتابیس دوم ینی postgresql کانکشن بزنید.خب احتمالا توی مرحله 2 یه ارور دارید برای کانکت شدن به mysql یه ارور خیلی بزرگ که داره میگه:Error connecting to database [MySQLConnetion] : org.pentaho.di.core.exception.KettleDatabaseException: Error occurred while trying to connect to the databaseDriver class 'org.gjt.mm.mysql.Driver' could not be found, make sure the 'MySQL' driver (jar file) is installed.اولش یه همچین چیزیه!اگه باز هم فکر کردید که خیلی زرنگ هستید و رفتید از snap craft نصب کردید نمیتونید حلش کنید یا حداقل من نتونستم!توی فایل های این برنامه یه پوشه هست به اسمlib باید از لینک زیر فایل مورد نیازش رو دانلود کنید و بذارید توی این پوشه:https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.48.zipدرحال حاضر آخرین ورژن mysql connector همین هست میتونید سرچ کنید اگر ورژن جدید تر داره دانلودش کنید.بعد از unzip کردن دوتا فایل .jar داره که باید تو پوشه lib کپی کنید.حالا برنامه رو restart کنید و دوباره مرحله هارو انجام بدید نباید هیچ اروری بده!بعد از ساختن کانکشن ها باید بریم و table های mysql رو کپی کنیم توی postgresql.از مسیر :Tools -> Wizard -> Copy Tablesاسم کانکشن هارو میاره سمت چپ اسم کانکشن mysql رو انتخاب کنید و سمت راست اسم کانکشن postgresqlاسم هارو موقع ساخت کانکشن خودتون نوشتید.بعد بزنید nextمیبینید که لیست table هارو میاره مثل شکل زیرمهاجرت به postgresqlبا فلش میتونید تیبل مورد نظر رو اضافه کنید که کپی بشه! مرحله بعد یسری پروسس انجام میده و یه شکل بهمون نشون میده مثل شکل زیر:migrate to postgresqlسمت چپ بالا یه آیکون play یا همون start داره که وقتی بزنیم شروع میکنه به کپی کردن.تمام. نکته:1.دیتا بیس دوم (postgresql) نباید تیبل انتخابی رو داشته باشه!2.اگر تیبل توی دیتابیس هست اول باید drop کنید و این برنامه خودش براتون میسازه تیبل رو!3.ترجیحا همه table هارو انتخاب کنید که هیچ dependency جا نیوفته و به ارور و مشکلی نخورید.اگر همه مراحل رو با دقت انجام بدید نباید مشکلی پیش بیاد! الان سایت من به خوبی داره با postgresql کار میکنهسایت من یه سایت دانلود فیلم هست که به علت اضافه کردن یه فروشگاه احساس کردم خیلی کنده و باید یکم بهتر بشه.این هم آدرس سایت: https://vdmovie.ir این هم آدرس فروشگاه: https://dreamland.pwاین دوتا آدرس فقط روی یه پروژه جنگو هستن و از یه دیتابیس استفاده میکنن.اگر دوست داشته باشید میتونم آموزش ایجاد چند سایت توی یه پروژه جنگو رو هم آموزش بدم.اگر اشکالی توضیحی پیشنهاد و هرچیز دیگه ای بود توی کامنت ها برام بنویسید:)