当前位置: 首页 > news >正文

网站建设教程下载广州市城市建设档案馆网站

网站建设教程下载,广州市城市建设档案馆网站,电影购票网站开发背景,自治区建设厅网站文章标题 1、安装sqlserver数据库2、下载kettle3、业务分析4、详细流程(1)转换1:获取sqlserver所有表格名字,将记录复制到结果(2)转换2:从结果设置变量(3)转换3&#xff…

文章标题

      • 1、安装sqlserver数据库
      • 2、下载kettle
      • 3、业务分析
      • 4、详细流程
        • (1)转换1:获取sqlserver所有表格名字,将记录复制到结果
        • (2)转换2:从结果设置变量
        • (3)转换3:生成建表的DDL
        • (4)转换4:迁移数据到mysql
        • (5)工作流1:单表同步流程
        • (6)工作流2:主流程

title: ETL-使用kettle批量复制sqlserver数据到mysql数据库
date: 2023-11-21 10:21:53
tags: ETL
cover: https://gulimall-ayu.oss-cn-chengdu.aliyuncs.com/blog/QQ%E5%9B%BE%E7%89%8720231121133353.png

1、安装sqlserver数据库

#安装之前我们准备好挂载文件夹:/opt/module/mssql
#并且修改文件夹所有者:  chown -R 10001:0 ./opt/module/mssqldocker run \--name mssql \-e 'ACCEPT_EULA=Y' \-e 'MSSQL_SA_PASSWORD=XLYqwe123' \-p 1433:1433 \-v /opt/module/mssql:/var/opt/mssql \--restart=always \-d mcr.microsoft.com/mssql/server:2017-latest#进入容器命令:
docker exec -it 容器id /bin/bash#登录命令:/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "XLYqwe123"#然后我们就可以创建一些表用来模拟传输数据

2、下载kettle

kettle在外网下载起来非常慢,这是我使用的版本
链接:https://pan.baidu.com/s/142eHrLx5AjmGxwCEbabfCw?pwd=uqmh 
提取码:uqmh

3、业务分析

现在一共是四百多张表在sqlserver里面,直接用navicat的传输工具要报错,
在kettle里面是这样解决的,先根据sqlserver的表生成mysql的建表语句(ddl),然后
在将sqlserver的表格数据插入过去。

4、详细流程

流程完全是copy的这个文章:
https://blog.csdn.net/xuyang2059/article/details/124431556?spm=1001.2014.3001.5502总共涉及到两个工作流,4个转换算子
(1)转换1:获取sqlserver所有表格名字,将记录复制到结果

QQ图片20231121131548png

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
ORDER BY TABLE_NAME;

QQ图片20231121131551png

QQ图片20231121131530png

(2)转换2:从结果设置变量

QQ图片20231121132042png

QQ图片20231121132045png

QQ图片20231121132048png

QQ图片20231121132051png

(3)转换3:生成建表的DDL

QQ图片20231121132314png

declare @table varchar(100) = '${TNAME}'
declare @sql table(s varchar(1000), id int identity)
-- 创建语句
insert into  @sql(s) values ('create table if not exists ${TNAME} (')-- 获取注释
SELECT A.name  AS table_name,B.name  AS column_name,C.value AS column_description
into #columnsproperties
FROM sys.tables AINNER JOIN sys.columns B ON B.object_id = A.object_idLEFT JOIN sys.extended_properties C ON C.major_id = B.object_id AND C.minor_id = B.column_id
WHERE A.name = @table-- 获取列的列表,拼接语句
insert into @sql(s)
select '  `' + replace(lower(a.column_name),' ','') + '` ' +case data_typewhen 'datetime2' then 'datetime'when 'datetimeoffset' then 'datetime'when 'smalldatetime' then 'datetime'when 'money' then 'decimal(19,4)'when 'smallmoney' then 'decimal(19,4)'when 'nchar' then 'varchar'when 'ntext' then 'text'when 'nvarchar' then 'varchar'when 'char' then 'varchar'when 'real' then 'float'when 'numeric' then 'decimal'when 'uniqueidentifier' then 'varchar(40)'when 'xml' then 'text'when 'image' then 'longblob'else data_typeend +coalesce(case data_type when 'image' then '' -- xml格式转成text也不能在后面加长度否则text会自动变成tinytextwhen 'xml' then ''else '(' + cast(abs(character_maximum_length) as varchar) + ')' end, '') + ' ' +(case when IS_NULLABLE = 'NO' then 'NOT ' else '' end) + 'NULL ' +replace(replace(coalesce('DEFAULT ' + COLUMN_DEFAULT, ''), '(', ''), ')', '') +casewhen isnull(convert(varchar, b.column_description), '') <> ''then '/**' + isnull(convert(varchar, b.column_description), '') + '**/,'else ',' end
from INFORMATION_SCHEMA.COLUMNS aleft join #columnsproperties bon convert(varchar, a.column_name) = convert(varchar, b.column_name)
where a.table_name = @table
order by ordinal_position-- etl日期字段
insert into @sql(s)
values ('  etl_date datetime NOT NULL ,')-- 主键
declare @pkname varchar(100)
select @pkname = constraint_name
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
where table_name = @tableand constraint_type = 'PRIMARY KEY'
if (@pkname is not null)begininsert into @sql(s) values ('  PRIMARY KEY (')insert into @sql(s)select '   ' + COLUMN_NAME + ','from INFORMATION_SCHEMA.KEY_COLUMN_USAGEwhere constraint_name = @pknameorder by ordinal_position-- 去除尾部多余的字符update @sql set s=left(s, len(s) - 1) where id = @@identityinsert into @sql(s) values ('  )')end
elsebegin-- 去除尾部多余的字符update @sql set s=left(s, len(s) - 1) where id = @@identityend
-- 继续拼接
insert into @sql(s)
values (')')drop table #columnsproperties-- 输出结果
select stuff((select CHAR(10) + s from @sql order by id for xml path('')), 1, 1, '') as ddl

QQ图片20231121132317png

QQ图片20231121132319png

QQ图片20231121132321png

(4)转换4:迁移数据到mysql

QQ图片20231121132600png

QQ图片20231121132603png

(5)工作流1:单表同步流程

QQ图片20231121132752png

QQ图片20231121132754png

(6)工作流2:主流程

QQ图片20231121132923png
请添加图片描述

http://www.yayakq.cn/news/879744/

相关文章:

  • 中山哪里有做网站互联网公司和软件公司
  • 网站流量分析工具网站网站的建设
  • aspx网站开发室内设计去哪里学
  • seo站长论坛外贸推广平台哪家好
  • .net 网站模板下载地址电器网站建设规划书
  • 换服务器后网站首页不收录南城网站建设公司策划
  • 如何新做的网站让百度快速收录wordpress 鼠标悬停图片 焦点
  • cloud域名注册网站塑料机械网站建设
  • 网站内容被删除怎么取消收录软件企业网站建设栏目结构图
  • 呼和浩特市城乡建设保障局网站淘宝客网站建站源码
  • 星级酒店网站建设公司电子政务门户网站建设的意义
  • 常州网站建设市场如何注册一个设计网站
  • 买卖域名的网站好网站建设网站排名优化
  • 电影网站vps服务器网站建设糹金手指花总
  • 消防网站建设目标免费动态域名申请
  • 网站备案成功后怎么办漳州违法建设举报网站
  • 毕业设计代做网站jsp本地建站软件有哪些
  • 浙江昆仑建设集团网站推荐wordpress安装方式
  • 如何制作网站链接泰州建设企业网站
  • php网站建设考试石家庄seo代理
  • wordpress全站使用cdn网上推广app合法吗
  • html如何做自己的网站wordpress中文 手机版
  • 检察门户网站 建设意义网站推荐几个
  • 南通医院网站建设方案阳泉哪里做网站
  • 建设工程招投标网最专业的网站建设银行广安官方网站
  • 东营网站建设制作新人做直播哪个网站好
  • 网站建设专业的公司网站建设策划
  • 重庆南岸营销型网站建设公司哪家专业免费主机免费域名
  • 通化工程建设信息网站wordpress怎么改电子邮箱
  • 书画网站模板下载wordpress加水印插件