db2中多种方式备份数据

db2中多种方式备份数据

  • [1. 前言------关于DB2的其他操作](#1. 前言——关于DB2的其他操作)
  • [2. 单表备份(备份数据)](#2. 单表备份(备份数据))
    • [2.1 使用create table as ...](#2.1 使用create table as ...)
    • [2.2 使用 export 命令备份ixf文件](#2.2 使用 export 命令备份ixf文件)
      • [2.2.1 导出数据命令(export)](#2.2.1 导出数据命令(export))
        • [2.2.1.1 导出到当前路径](#2.2.1.1 导出到当前路径)
        • [2.2.1.2 导出到当指定路径](#2.2.1.2 导出到当指定路径)
      • [2.2.2 导入数据命令(load)](#2.2.2 导入数据命令(load))
      • [2.2.3 导出表中部分数据(可加where)](#2.2.3 导出表中部分数据(可加where))
    • [2.3 使用 export 命令备份del文件](#2.3 使用 export 命令备份del文件)
  • [3. 导出表结构、存储过程、函数等](#3. 导出表结构、存储过程、函数等)
  • [4. 导出数据(多表)](#4. 导出数据(多表))
  • [5. 导入表结构](#5. 导入表结构)

1. 前言------关于DB2的其他操作

2. 单表备份(备份数据)

2.1 使用create table as ...

  • 语法如下:

    sql 复制代码
    --1. 创建表my_table_test
    CREATE TABLE my_table_test AS(
    	SELECT t.DEPT_ID ,t.DEPT_NAME FROM SYS_COMPANY_DEPT t 
    )DATA INITIALLY DEFERRED
    refresh DEFERRED;
    
    --2. refresh 之后,表就可以查询了
    refresh TABLE my_table_test;
    
    --3. 使表 my_table_test 可以被操作修改等功能
    ALTER TABLE my_table_test DROP materialized query;
    
    --4. 查询检查数据
    SELECT * FROM my_table_test;
  • 查看备份数据:

2.2 使用 export 命令备份ixf文件

2.2.1 导出数据命令(export)

2.2.1.1 导出到当前路径
  • 进入指定目录(文件导出的目录),执行命令如下(下面命令是备份 my_table_test 表的数据):

    bash 复制代码
    db2 export to /home/db2inst1/test_export/my_table_test.ixf of ixf select * from my_table_test
2.2.1.2 导出到当指定路径
  • 上面命令如果不修改必须在指定路径下执行才可以,否则报错,那么怎么才能在任何路径下都可执行export命令呢?只需加引号(将export导出命令引住),如下:

    bash 复制代码
    db2 'export to /home/db2inst1/test_export/SYS_COMPANY_DEPT.ixf of ixf select * from SYS_COMPANY_DEPT'

2.2.2 导入数据命令(load)

  • 可以把当前 my_table_test 表里的数据给truncate一下,重新导入备份数据,当然也可以新创建一个备份表用来存放备份数据,这里创建一个新表 my_table_test_bak,所以接下来是将备份数据导入到表my_table_test_bak中,如下:

    bash 复制代码
    db2 load from /home/db2inst1/test_export/my_table_test.ixf of ixf replace into my_table_test_bak

2.2.3 导出表中部分数据(可加where)

  • 如下:

    bash 复制代码
    db2 'export to /home/db2inst1/test_export/SYS_USER_1and2.ixf of ixf SELECT * FROM SYS_USER u WHERE u.USER_ID in('1001','1002')'

2.3 使用 export 命令备份del文件

  • 用 export命令可以将数据库表导出成del,ixf, wsf 或者txt格式的文件,命令与备份ixf文件一样,下面是导出的del的文件,如下:

    sql 复制代码
    -- 导出 DOG 表数据
    db2 'export to /home/db2inst1/test_export/DOG.del of del select * from DOG'
    
    -- 导入 到 dog_2 表
    db2 'load from /home/db2inst1/test_export/DOG.del of del replace into dog_2'
  • 问题是,这种方式导入的数据乱码,如下:

    乱码没有解决,最后选择ixf文件导出导入,感兴趣的自己可以试试怎么解决!

3. 导出表结构、存储过程、函数等

  • 导出数据库创建表语句、创建函数等语句,命令如下:

    bash 复制代码
    # 不需要密码直接导出
    db2look -d hello -a -e -o /home/db2inst1/test_export/test.sql
    
    # 需要密码
    # db2look -d 数据库名 -i 数据库链接用户 -w 数据库链接密码 -a -e -o 导出sql文件存放路径
    db2look -d hello -i db2inst1 -w db2inst1-pwd -a -e -o /home/db2inst1/test_export/test_2.sql
  • 查看导出的文件内容,简单查看如下:

4. 导出数据(多表)

  • 命令如下:

    bash 复制代码
    # db2move 数据库名 export -u 数据库链接名 -p数据库链接密码
    db2move hello export -u db2inst1 -p db2inst1-pwd
  • 查看导出数据的文件:

5. 导入表结构

  • 下面的命令,没有尝试,想尝试的自己可以尝试,参考链接如下:
    DB2数据库数据备份导出导入.

  • 命令如下:

    bash 复制代码
    db2 -tvf test.sql > 1.log
相关推荐
打鱼又晒网几秒前
【MySQL】数据库精细化讲解:内置函数知识穿透与深度学习解析
数据库·mysql
大白要努力!5 分钟前
android 使用SQLiteOpenHelper 如何优化数据库的性能
android·数据库·oracle
tatasix1 小时前
MySQL UPDATE语句执行链路解析
数据库·mysql
南城花随雪。1 小时前
硬盘(HDD)与固态硬盘(SSD)详细解读
数据库
儿时可乖了1 小时前
使用 Java 操作 SQLite 数据库
java·数据库·sqlite
懒是一种态度1 小时前
Golang 调用 mongodb 的函数
数据库·mongodb·golang
天海华兮1 小时前
mysql 去重 补全 取出重复 变量 函数 和存储过程
数据库·mysql
gma9992 小时前
Etcd 框架
数据库·etcd
爱吃青椒不爱吃西红柿‍️2 小时前
华为ASP与CSP是什么?
服务器·前端·数据库
Yz98763 小时前
hive的存储格式
大数据·数据库·数据仓库·hive·hadoop·数据库开发