db2数据迁移

步骤一:导出建表语句

  • 假设数据库为HGQW1108,用户名db2inst1,密码HUBBLE
  • DB2迁移到hubble,整库从DB2导出的话也要单表导入hubble,所以只考虑单表导出,然后导入到hubble
  • 进入/home/db2inst1/data目录(根据具体项目确定目录),执行以下语句,导出建表sql脚本
db2start #开启数据库
db2look -d HGQW1108 -a -e -i db2inst1 -w HUBBLE -o db2.sql
  • 查看目录
[db2inst1@hilbert02 data]$ ls
db2.sql

步骤二:导出csv文件

  • 连接数据库(/home/db2inst1/data目录下)
db2 
connect to HGQW1108
  • 导出单表
export to /home/db2inst1/data/tb_BBS.csv of del select * from  tb_BBS
db2 => export to /home/db2inst1/data/tb_BBS.csv of del select * from  tb_BBS
SQL3104N  The Export utility is beginning to export data to file 
"/home/db2inst1/data/tb_BBS.csv".

SQL3105N  The Export utility has finished exporting "3" rows.


Number of rows exported: 3
  • 退出数据库连接,并查看csv生成情况
quit
[db2inst1@hilbert02 data]$ ls *.csv
tb_BBS.csv

步骤三:DB2映射hubble数据类型

  • 使用之前步骤一生成的SQL文件,编写IMPORT TABLE与要导入的表数据的模式匹配的语句。

  • 删除所有特定于DB2的属性,重新映射所有据类型,重构所有CREATE TABLE语句

数据类型映射表

DB2数据类型hubble数据类型
BLOBBYTES 1个
CHAR(n)CHAR(n)
CLOBSTRING 1个
DATEDATE
FLOAT(n)DECIMAL(n)
VARCHAR2(n)VARCHAR(n)
TIMESTAMPTIMESTAMP
IntegerTNT4
FLOAT(n)DECIMAL(n)
Double DECIMAL
Smallint TNT4
BigintTNT8
Numeric(p,s) DECIMAL(p,s)
Decimal(p,s) DECIMAL(p,s)
Vargraphic(n)  varchar(n)
Graphicn)  varchar(n)
Real  DECIMAL(n)
  • 确定好数据类型后修改对应的建表语句

  • 调整主键的建表格式,以上述tb_bs表举例

  • db2语法

create table TB_BS(id int not null,title varchar(10),content varchar(40),primary key(id))
  • hubble语法
create table TB_BS(id int not null primary key,title varchar(10),content varchar(40));

步骤四:将导出的数据文件放置于集群可访问到的位置

  • Hubble集群中的每个节点都需要访问到需导入的数据文件。

  • URL必须使用以下格式:

[scheme]://[host]/[path]?[parameters]

当前支持的类型如下:

类型schemahost参数示例
httphttp主机地址N/Ahttp://localhost:8080/mydatest.sql
NFS/Localnodelocal节点ID或为空N/Anodelocal:///path/mydatest,nodelocal://n/path/mydatest

nodelocal://n/path/mydatest,n是节点数,不能省略,地址这块与3.7版本是有区别的。

步骤五:导入数据

  • 在完成建表以及文件放置后,执行导入语句
IMPORT into TB_BS( id ,title,content
) CSV DATA ( 'nodelocal://1/cus/tb_BBS.csv' ) 
WITH 
    DELIMITER = ','
;
root@poc-hubble01:35432/oracle> IMPORT into TB_BS( id ,title,content
                             -> ) CSV DATA ( 'nodelocal://1/cus/tb_BBS.csv' ) 
                             -> WITH 
                             ->     DELIMITER = ','
                             -> ;
        job_id       |  status   | fraction_completed | rows | index_entries | bytes
---------------------+-----------+--------------------+------+---------------+--------
  749715636016250881 | succeeded |                  1 |    3 |             0 |    93
(1 row)

Time: 365ms total (execution 365ms / network 0ms)
  • 查看数据
root@poc-hubble01:35432/oracle> select * from tb_bs;
  id  | title | content
------+-------+-----------
  111 | TXT   | 文章描述
  123 | SQL   | 文本内容
  222 | CSV   | 文本导入
(3 rows)

Time: 2ms total (execution 2ms / network 0ms)

可参考CSV数据迁移