mysql - 动态创建表并将数据从 MySQL 复制到 SQL Server 数据库
问题描述
我可以通过检查 MySQl 表中的列在 SQL Server 中手动创建一个表。然后能够将数据从 MySQL 移动到 SQL Server 表。
示例:MySQL 表 = 员工
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
使用这个我在 SQL Server 中创建同一个表
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:
select EmpId,Name,Age,EmailId into MsSQLdb..Employee
from
OPENQUERY(LinkedServer, 'SELECT EmpId,Name,Age,EmailId FROM mySQL_db.Employee')
但是,我的 mySQL_db.Employee 表每天都会获得更多或更少的列。所以每天我需要在上述查询中手动映射这些列来重做任务。这个任务有什么动态的方法吗?
我有大约 40 张桌子,每张桌子大约有 30 多列。所以寻找任何一种动态的方式。
解决方案
您可以SELECT * INTO
将数据加载到表中。更多关于选择
我假设您适合DROP
&RECREATE
和加载数据的简单场景。您可能无法获得正确的数据类型,因为 SQL Server 根据初始行集自动确定数据类型。
DROP TABLE dbo.Employee;
SELECT * INTO dbo.Employee
from
OPENQUERY(LinkedServer, 'SELECT * FROM mySQL_db.Employee')
源表中定义的索引、约束和触发器不会转移到新表中,也不能在 SELECT...INTO 语句中指定。如果需要这些对象,您可以在执行 SELECT...INTO 语句后创建它们。
推荐阅读
- camunda - 与 Camunda 流程引擎的通信
- microsoft-graph-api - 更改对 ODfB 文件夹的权限
- spring-boot - 将 XML 请求正文内容解码为 Mono 或 Flux 对象时出现 Spring Boot Webflux Handler 错误
- python - 如何在 buildroot 中包含 htop
- android - INSTALL_FAILED_CONFLICTING_PROVIDER - Android 模拟器安装错误
- javascript - React 测试库:何时使用 userEvent.click 以及何时使用 fireEvent
- python - 安装结构所需的 Microsoft C++ 构建工具 - Python
- javascript - 根据 Formik/Yup Validation 更改按钮的颜色
- command-line-interface - 安装 platformsh CLI 时 Bash 显示错误
- android - 如何从视图模型的存储库中获取 LiveData 的值?