动态创建表并将数据从MySQL复制到SQL Server数据库

动态创建表并将数据从MySQL复制到SQL Server数据库,mysql,sql-server,dynamic-tables,Mysql,Sql Server,Dynamic Tables,通过检查MySQl表中的列,我可以在SQLServer中手动创建一个表。然后能够将数据从MySQL移动到SQL Server表 示例:MySQL table=Employee Describe Employee; 输出 Field, Type, Null, Key, Default, Extra EmpId int(10) NO PRI 0 Name varchar(100) YES Age int(10) YES

通过检查MySQl表中的列,我可以在SQLServer中手动创建一个表。然后能够将数据从MySQL移动到SQL Server表

示例:MySQL table=Employee

Describe Employee;
输出

Field,   Type,       Null,  Key, Default, Extra
EmpId   int(10)       NO     PRI    0
Name    varchar(100)  YES       
Age     int(10) YES                 18
EmailId  varchar(100) NO
使用这个,我在SQLServer中创建相同的表

Drop table MsSQLdb..Employee;
CREATE TABLE Employee (
    EmpId int NOT NULL PRIMARY KEY DEFAULT 0,
    Name varchar(100),
    Age int de,
    Name varchar(100)  NOT NULL DEFAULT  18
);
现在使用OpenQuery将数据从MySQL复制到SQL Server:

但是,我的mySQL_db.Employee表每天都会得到更多或更少的列。因此,每天我都需要在上面的查询中手动映射这些列以重做任务。这个任务有什么动态的方法吗


我有大约40个表,每个表大约有30多列。因此,寻找任何一种动态方式。

您可以选择
SELECT*INTO
将数据加载到表中

我假设您可以使用
删除
重新创建
以及加载数据的简单场景。您可能无法获得正确的数据类型,因为数据类型是由SQL Server根据初始行集自动决定的

DROP TABLE dbo.Employee;
SELECT * INTO dbo.Employee 
from
OPENQUERY(LinkedServer, 'SELECT * FROM mySQL_db.Employee')
不支持源表中定义的索引、约束和触发器 传输到新表,也不能在 在语句中选择。如果需要这些对象,可以创建 在执行SELECT…INTO语句后,将删除它们


您如何知道添加或删除了哪些列?您究竟是如何在生产系统中每天获得不同数量的列的?如果他们在mysql中使用了一种您不能(json)或不应该(enum)直接导入ms sql server的数据类型,该怎么办?@Shadow,这已经是我在这里使用prod表的问题了。它的开发仍然缓慢了一年。所以发布了这个问题寻求帮助
DROP TABLE dbo.Employee;
SELECT * INTO dbo.Employee 
from
OPENQUERY(LinkedServer, 'SELECT * FROM mySQL_db.Employee')