原文链接:https://www.gbase.cn/community/post/3841
更多精彩内容尽在南大通用GBase技术社区。
SQL Server是Microsoft公司推出的关系型数据库管理系统,具有使用方便可伸缩性好与相关软件集成程度高等优点。本文章介绍SQL Server数据迁移到GBase 8c的实现流程。
本文章实现的基础在于GBase 8c能够完全兼容PostgreSQL语法,采用离线迁移方式,通过kettle、sqlserver2pg工具将SQL Server数据离线导出,再流转导入到GBase 8c数据库中。
- kettle:开源 ETL工具,可用于数据库间的数据迁移,运行环境支持Linux、windows、unix 等类型的操作系统。
-
sqlserver2pg:可以装在windows上,也可以装在linux下
前提:下载依赖包perl 5.0以上版本。
操作说明
1、在SQL Server源端,导出需要迁移数据库及表对象、视图、存储过程、自定义函数
登陆sqlserver management studio 选择数据库—右击--任务--生成脚本
选择对应的对象后,进行下一步----下一步---完成(生成.sql文件)
2、装载sqlserver2pg
可以装在windows上,也可以装在linux下。本文下述测试均是在linux环境下。依赖:perl插件、kettle java1.8数据迁移依赖工具。
准备
- 建议在gbase 用户下部署sqlserver2pg,并预设解压目录为存储目录,用于存储后续生成的sqlserver脚本。
- 安装在kettle路径下,解压安装文件后将移动目录:
cp -r data-integration/ /home/gbase/sqlserver2pgsql-master/
# 下载依赖
yum intsall -y webkitgtk3.x86_64
授权文件:
chmod +x -R *.sh
./kitchen.sh
./spoon.sh & ## 弹出界面
3、执行迁移
(1)文件转换测试
./sqlserver2pgsql.pl -f sqlserver_sql_dump -b output_before_script -a output_after_script -u output_unsure_script
或者使用配置文件
./sqlserver2pgsql.pl -conf example_conf_file -f mydatabase_dump.sql
(2)生成kettle文件
./sqlserver2pgsql.pl -b output_before_script -a output_after_script -u output_unsure_script -k data-integration/ -sd NIS -sh 172.16.162.11 -sp 1433 -su sa -sw gbase;123 -pd test2 -ph 172.16.5.102 -pp 5432 -pu regress -pw Gbase_1234 -f NIS.sql
(3)执行表结构
gsql -U regress -W Gbase_1234 test2 -f output_before_script
(4)适用kettle迁移数据
1)使用界面化显示
export DISPLAY=172.16.162.11:0.0
./spoon.sh &
自动会打开3(2)生成的kettle文件(migration.kjb),直接执行即可。
2)使用命令行的方式
注意:jtds-1.3.1-dist的jdbc驱动需要存放到lib下
./kitchen.sh -file=../data-integration_record/migration.kjb -level=detailed
使用sql执行:修改表约束及索引等
gsql -d test2 -h 172.16.5.102 -p 5432 -U regress -W Gbase_1234 -f output_after_script
3)拷贝文件windows kettle 进行数据数据传输。
修改这两个文件:
两文件中的路径为当前windows路径:
以上是全量迁移(migration.kjb)与增量迁移(incremental.kjb)的方案。