将关系数据从 MSSQL (Azure SQL Server) 移动到 MySQL 数据库

Posted

技术标签:

【中文标题】将关系数据从 MSSQL (Azure SQL Server) 移动到 MySQL 数据库【英文标题】:Moving relational data from MSSQL (Azure SQL Server) to MySQL database 【发布时间】:2021-07-15 21:47:58 【问题描述】:

将大型数据集从 MSSQL (Azure SQL Server) 复制到自托管 mysql 数据库的正确方法是什么?为了增加一些复杂性,这需要每晚更新网络应用使用的价格、产品等。

目前我们有一个 Node.js 脚本,它逐表查询所有内容,并在 MySQL 数据库中创建具有相同数据、外键和主键的行。这适用于较小的表。主要问题是客户和价格表,以及它们之间的多对多关系。目前在 MSSQL 中有定义关系的 CustomersPrices 表,它有超过 4400 万行。客户表本身只有 3000 行,而价格只有 50 万行。

下面是来自 MSSQL 的客户、价格和客户价格的架构:

model CustomersPrices 
  PriceID       Int?
  CustomerID    Int?
  Private_Label String?
  Customers     Customers? @relation(fields: [CustomerID], references: [ID])
  Prices        Prices?    @relation(fields: [PriceID], references: [ID])


model Customers 
  ID                      Int               @id @default(autoincrement())
  No_                     String?
  Name                    String?
  Customer_Price_Group    String?
  Customer_Disc__Group    String?
  Customer_PL_Price_Group String?
  Customer_PL_Disc__Group String?
  PL_Text                 String?
  Closed_Status           String?
  Credit_Limit__LCY_      Decimal?
  Current_Balance__LCY_   Decimal?
  Remaining_Limit__LCY_   Decimal?
  Salesperson_Code        String?
  Responsibility_Center   String?
  Address                 String?
  Address_2               String?
  Post_Code               String?
  City                    String?
  Shipment_Method_Code    String?
  Bill_to_Customer_No_    String?
  Show_Limit_Info         Int?
  Primary_Contact_No_     String?
  InsertedDatetime        DateTime
  SalesPersonID           Int?
  Salesperson             Salesperson?      @relation(fields: [SalesPersonID], references: [ID])
  Contact                 Contact[]
  CustomersPrices         CustomersPrices[]
  Sales_Header            Sales_Header[]


model Prices 
  ID                        Int               @id @default(autoincrement())
  Item_No_                  String?
  Variant_Code              String?
  Sales_Type                String?
  Sales_Code                String?
  Unit_of_Measure_Code      String?
  Sales_Minimum_Quantity    Decimal?
  Unit_Price                Decimal?
  Discount_Minimum_Quantity Decimal?
  Discount_Pct              Decimal?
  Starting_Date             DateTime?
  Ending_Date               DateTime?
  InsertedDatetime          DateTime 
  ProductID                 Int?
  Products                  Products?         @relation(fields: [ProductID], references: [ID])
  CustomersPrices           CustomersPrices[]

按照我们的指示,我们不能直接将 MSSQL 用于 Web 应用程序。

目前我们正在尝试将 Node.js 与 Prisma.io(用于 MySQL)和 Tedious(用于查询 MSSQL)一起使用。

感觉真的卡在了那一刻。你会如何建造这个?提前谢谢你。

【问题讨论】:

我与 Prisma 团队合作,我们正准备在 GA 中发布 SQL Server 连接器。您是否仍然遇到此问题,或者您有任何我们应该优先考虑的特定要求?请随时与我们联系here 【参考方案1】:

您不想务实地这样做。有一些工具可以解决数据迁移问题。查看如何使用 MySQL Workbench 来完成此操作:https://www.mysql.com/products/workbench/migrate/

【讨论】:

以上是关于将关系数据从 MSSQL (Azure SQL Server) 移动到 MySQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

Azure Stack中添加SQL Server资源提供程序

将 PostgreSql 时间戳查询转换为 MS SQL/Azure SQL

用于使用 Azure SQL Server 数据的 C# Web API

将 s-s-rS 报告迁移到 AZURE VM,而不迁移本地 SQL 数据库。可能吗?

将 MSSQL2008 *.bak 文件转换为 SQL-CE *.sdf

我可以使用 Sqoop 将数据从 SQL Server 导入 Azure Blob 存储吗