当前位置:首页 > 问答 > 正文

linux下用的db2数据库那些命令到底有哪些啊,想了解一下常用指令都啥样

整理自IBM官方文档、DB2社区常见问题汇总以及《DB2数据库管理与应用实战》等资料中的常用命令部分)

好的,直接来看在Linux操作系统上使用DB2数据库时,那些经常会用到的命令,咱们就把它当成是在黑乎乎的终端窗口里,一步一步怎么敲命令来和DB2打交道。

你得进入DB2的命令环境

刚打开Linux终端时,你不能直接敲DB2命令,需要先进入DB2的命令行处理器(CLP),有两种常见方式:

  1. 直接启动DB2命令行: 输入 db2 然后回车,这时候,命令提示符会变成 db2 =>,接下来你输入的所有命令,前面都不用再加 db2 了,直接写命令本身就行,用完想退出这个环境,就输入 quit 或者 exit
  2. 在系统Shell中带命令执行: 更常用的方式是,在普通的Linux命令提示符下([user@server ~]$),在每个DB2命令前面加上 db2 和一个空格,你想看版本,就输入 db2level

下面说的命令,主要都是用第二种方式举例,因为这样更贴近实际操作习惯。

数据库实例相关的命令(实例好比是管理数据库的“大管家”)

  • 查看当前连接的实例是谁: db2 get instance

    这个命令告诉你,你现在操作的是哪个DB2实例,一台Linux服务器上可以装多个DB2实例。

  • 启动DB2实例: db2start

    想用数据库,得先把“大管家”叫醒,这个命令就是启动当前实例。

  • 停止DB2实例: db2stop
    • 不用数据库了,或者要维护了,就 gracefully地停止实例,有时候可能停不掉,因为有应用还连着,可以加 force 参数强制停止:db2stop force,但这有点像直接拔电源,要小心。
  • 连接(附着)到实例: db2 attach to <实例名>

    如果你有多个实例,需要用这个命令切换到另一个实例去操作。

    linux下用的db2数据库那些命令到底有哪些啊,想了解一下常用指令都啥样

数据库本身的操作命令(数据库是装数据的“仓库”)

  • 创建一个新的数据库: db2 create db <数据库名>
    • db2 create db MYTESTDB,就创建了一个叫MYTESTDB的数据库。
  • 连接到某个数据库: db2 connect to <数据库名> user <用户名> using <密码>
    • 创建好数据库后,或者要操作一个已存在的数据库,必须先连接上。db2 connect to SAMPLE user db2inst1 using mypassword,如果用户名密码就是当前Linux登录用户,有时可以省略。
  • 断开与当前数据库的连接: db2 connect reset 或者 db2 disconnect current
  • 列出当前实例下所有的数据库: db2 list db directory

    这个命令会列出这个“大管家”管理的所有“仓库”。

  • 备份数据库: db2 backup db <数据库名> to <路径>
    • 非常重要!定期备份,防止数据丢失。db2 backup db MYDB to /home/backup/
  • 恢复数据库: db2 restore db <源数据库名> from <备份路径> taken at <时间戳> into <新数据库名>

    恢复命令稍微复杂点,需要指定备份文件的位置和具体时间戳。

表和数据相关的命令(表是仓库里的“货架”,数据是“货物”)

连接上数据库后,大部分时间都在和表打交道。

linux下用的db2数据库那些命令到底有哪些啊,想了解一下常用指令都啥样

  • 列出当前数据库里有哪几张表: db2 list tables
    • 刚接触一个库,先看看有什么表,如果想看所有表(包括系统表),可以加 for alldb2 list tables for all
  • 查看某张表的结构: db2 describe table <表名>
    • db2 describe table EMPLOYEE,这个命令会列出这张表有哪些列,每列是什么数据类型(比如整数、字符串、日期等),非常有用。
  • 执行一个SQL查询: 所有SQL语句前面都要加上 db2,并且最好用双引号把SQL语句包起来。
    • 查数据: db2 "select * from 表名 where 条件"
    • 插数据: db2 "insert into 表名 (列1, 列2) values (值1, 值2)"
    • 改数据: db2 "update 表名 set 列1=新值 where 条件"
    • 删数据: db2 "delete from 表名 where 条件" (小心!这个会真删数据)
  • 从文件导入数据到表: db2 "import from 文件路径 of 文件格式 insert into 表名"

    文件格式常见的有DEL(分隔符文件,如CSV)、IXF(DB2专用交换格式)等,这是批量灌数据的好办法。

监控和基础管理的命令

  • 查看当前有哪些应用连接到数据库: db2 list applications

    可以看看谁正在用数据库,如果某个连接卡死了,可以用这个命令找到它的句柄(Application Handle),然后强制断开它。

  • 强制断开一个连接: db2 force application (应用句柄)
    • db2 force application (123),用上面 list applications 找到句柄号。
  • 查看DB2的版本和服务级别: db2level

    排查问题时,经常需要提供这个信息。

  • 获取某个命令的帮助: db2 ? command
    • 如果某个命令记不清了,db2 ? update,它会显示 update 命令的语法和选项,这是最好的老师。

最后提醒几个小点:

  • 命令和参数大小写不敏感,但数据库名、表名、列名在创建时如果用了双引号括起来区分大小写,那查询时也要注意。
  • 执行SQL语句时,如果语句里有分号 ,必须用双引号把整个SQL语句括起来,否则分号会被Linux Shell误解。
  • 操作生产环境的数据库时,对数据进行修改(增删改)或者删除表、数据库这类命令,一定要格外小心,最好先在有备份的测试环境练习。

这些就是在Linux下摆弄DB2数据库最核心、最常用的一批命令了,多敲几次,熟悉了就会发现其实套路都差不多。