دسته بندی ها
12:04 1401/05/31

انتقال دیتابیس از Sql Server به PostgreSql

مشخصات سوال کننده :
کاربر : mshosseini     امتیاز کاربر : 33     رتبه کاربر : 23
دسته بندی : Sql Server PostgreSql

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2780
1 نظر
mshosseini : تست روی postgres و sql server انجام شد که postgres فوق العاده سرعت بالاتری داره

امتیاز کاربر : 33   رتبه کاربر : 23   تاریخ ثبت : 12:28 1401/05/31
هوش مصنوعی

پاسخ هوش مصنوعی

برای انتقال دیتابیس از SQL Server به PostgreSQL، می توانید مراحل زیر را دنبال کنید:

1. **بررسی ساختار دیتابیس:**
   - ابتدا باید ساختار دیتابیس SQL Server خود را بررسی کنید و تعیین کنید که کدام جدول ها و فیلدها را می خواهید انتقال دهید. 
   - به خصوص در مورد نوع داده ها توجه کنید زیرا SQL Server و PostgreSQL ممکن است نوع داده های متفاوتی داشته باشند.

2. **ایجاد اسکریپت های SQL:**
   - از SQL Server Management Studio (SSMS) استفاده کنید تا اسکریپت های `CREATE TABLE` را برای جدول های خود تولید کنید. 
   - همچنین می توانید با استفاده از کویری SQL زیر، تمامی جداول را در فرمت SQL استخراج کنید:
   ```sql
   SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';
   ```

3. **تبدیل اسکریپت ها به PostgreSQL:**
   - اسکریپت های SQL استخراج شده را برای استفاده در PostgreSQL تبدیل کنید. 
   - به عنوان مثال، نوع داده `DATETIME` در SQL Server به نوع داده `TIMESTAMP` در PostgreSQL تبدیل می شود. 
   - ممکن است لازم باشد نام جداول و فیلدها را به فرمت مناسب PostgreSQL تغییر دهید.

4. **انتقال داده ها:**
   - می توانید از ابزاری مثل `pgAdmin` یا `psql` برای بارگذاری داده ها به Tensor را استفاده کنید. 
   - برای صادرات داده ها از SQL Server می توانید از دستورات `bcp` یا `SQL Server Integration Services (SSIS)` استفاده کنید تا داده ها را به فرمت CSV یا TXT صادرات کنید.
   - سپس از `COPY` یا `\COPY` برای وارد کردن داده ها به PostgreSQL استفاده کنید:
   ```sql
   COPY table_name FROM 'file_path.csv' DELIMITER ',' CSV HEADER;
   ```

5. **مهاجرت Entity Framework:**
   - بعد از اتمام انتقال داده ها، می توانید از Entity Framework Core استفاده کنید. 
   - کتابخانه های مربوط به PostgreSQL را نصب کنید و `DbContext` و مدل های خود را برای Postgres پیکربندی کنید.
   - همچنین ممکن است نیاز داشته باشید مایگریشن های جدیدی برای ساخت جداول و روابط ایجاد کنید.

6. **تست:**
   - پس از انتقال، تمام عملکردها و گزارش ها را بررسی کنید تا اطمینان حاصل کنید که همه چیز به درستی کار می کند.

به یاد داشته باشید که پیش از شروع به این فرایند، یک پشتیبان کامل از دیتابیس SQL Server خود بگیرید تا در صورت بروز مشکل بتوانید به وضعیت قبل بازگردید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 17:22 1401/06/01

یکی از شناخته ترین نرم افزارهای مدیریت اطلاعات Sql Server هست که بهترین مزیت اون هم سادگی مدیریت اطلاعات و یوزرفرندلی بودن، هست. ولی این نرم افزار اشکالاتی داره از جمله این که هزینه بالای خود نرم افزار و سختگیریهای زیادی که در صدور مجوزهای داده ها داره. همچنین برای مدیریت داده های بزرگ راه حل های پیچیده ای رو داره که شاید برای هر کاربری قابل استفاده نباشه.

 

نرم افزار PostgreSql چیست ؟

نرم افزار PostfreSql یکی از دیتابیس های رابطه ای (RDBMS) بسیار قدرتمندیه که عملکرد یکپارچه پایگاه داده شی گرا و/یا رابطه ای را ارائه می دهد. برای پروژه هایی که به سطح بالایی از یکپارچگی و قابلیت اطمینان نیاز دارند این نرم افزار توصیه می شود. همچنین این نرم افزار سرعت بسیار بالایی در پرس و جوها و مدیریت داده های بزرگ رو ارائه می دهد.

 

انتقال اطلاعات از Sql Server به PostgreSql

خب سوال شما خیلی کلی هست و دقیقا نمیشه پاسخ دقیقی براش ارائه کرد. اما اگر بخواید اطلاعات رو از Sql Server به PostgreSql انتقال بدید یک وجه مشترک هست و اونم اینه که هر دو نرم افزار از زبان پرس و جوی T-Sql استفاده می کنند. بنابراین شما می تونید :

  • روی دیتابیس خودتون در Sql Server کلیک راست کنید و generate Script رو بزنید. در فرم باز شده گزینه Next رو بزنید تا به سربرگ Set Scripting Options برسید. دکمه Advanced رو بزنید و مطابق شکل Schema And Data رو انتخاب کنید تا اسکریپتی که ساخته میشه هم از دیتاها و هم از ساختار کلی دیتابیس شما باشه.

ایجاد اسکریپت از اطلاعات در sql server

 

خب در نهایت یک اسکریپت از دیتابیس دارید. حالا از این اسکریپت می تونید توی PostgreSql استفاده کنید. فقط یه سری تغییرات باید در اسکریپت بدید.

  • دستوراتی که مخصوص Sql Server هستند رو از اسکریپت پاک کنید. (مثلا Set ANSI_NULLS ON و ...)

  • در Sql Server برای کار با اشیا دیتابیس از براکت استفاده میشه. این براکتها رو با دابل کوتیشن عوض کنید.

  • اگر در اطراف types ها براکت به کار رفته حذفش کنید.

  • هر جا dbo نوشته شده با public تغییرش بدید.

  • کلیه عباراتی که در PostgreSql ساپورت نمیشن رو حذف کنید. مثلا CLUSTERED و WITH NOCHECK و ON PRIMARY و ...

  • اگر در جایی از IDENTITY برای افزایش اتوماتیک مقادیر استفاده شده عبارت INI IDENTITY رو با SERIAL تغییر بدید.

  • اگر جایی عبارت GO نوشته شده با ; تغییر بدید.

 

موارد بالا برای تبدیل اسکریپت قابل فهم برای PostgreSql مورد نیاز هست.

بهتره این موارد رو انجام بدید و اگر خطایی براتون رخ داد اون خطا رو بگید تا بررسی بشه چون اینجوری فقط میشه کلی توضیح داد.

منبع

به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
2 نظر
mshosseini : و با همین روش Entity و مایگریشن کارم رو با Postgres ادامه بدم اینو توضیح ندادین

امتیاز کاربر : 33   رتبه کاربر : 23   تاریخ ثبت : 11:40 1401/06/02
fateme : متوجه منظورتون از انتیتی یا مایگریشن نشدم. بنده روش انتقال اطلاعات از دیتابیس Sql Server به PostgreSql رو گفتم و کاری به انتیتی یا ... نداره.

امتیاز کاربر : 1635   رتبه کاربر : 2   تاریخ ثبت : 11:46 1401/06/03
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود