Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


虚谷数据库控制台工具

📄字数 12.8K
👁️阅读量 加载中...

一、概述

虚谷数据库控制台工具(xgconsole)是一款以命令行方式与服务端进行交互的客户端工具。可实现与虚谷数据库之间的SQL命令交互执行及结果集展示,此外也提供控制台相关功能如属性设置、缓冲区编辑、数据导入导出等。

虚谷数据库控制台工具,体积较小,部署灵活,使用方便,可在Linux、Windows操作系统的命令行环境中运行。主要功能包括以下几点:

  1. 命令行选项功能
  2. 连接与信息展示功能
  3. 缓冲区功能
  4. 通用控制功能
  5. 控制台属性设置功能
  6. 控制台属性重置功能
  7. 数据导入导出功能
  8. 初始化登录功能

二、获取控制台

2.1 产品包获取

控制台程序默认在虚谷数据库的产品包内,解压产品包后,控制台路径为:Client/xgconsole。不同操作系统和CPU架构的控制台工具,需要通过不同的产品包获取。

2.2 单独获取

xgconsole 还提供在线下载链接,可获取最新试用版和稳定版本的控制台工具。

操作系统CPU版本下载地址
Windowsx86, 64-bit2.2.7下载
Linuxx86, 64-bit2.2.7下载
LinuxARM, 64-bit2.2.7下载

提示

  1. Windows版本建议在Windows10及以上系统使用。
  2. Linux版本可以在所有对应的CPU架构的类Unix系统下运行。
  3. 如果有在其它系统上安装控制台客户端的需求,请联系虚谷。

三、安装和使用

3.1 安装

  1. 获取控制台程序,放置在方便查找的位置。
  2. 将控制台程序配置到操作系统的环境变量中,方便直接使用控制台程序。

3.1.1 Windows环境变量配置

txt
1. 找到xgconsole.exe,复制控制台程序所在的路径
2. 打开高级系统配置->环境变量
3. 在系统变量中,新建一个变量XGCONSOLE_HOME,值为第1步复制的路径
4. 在系统变量中,找到Path,编辑,在末尾增加%XGCONSOLE_HOME%
5. 重新打开CMD控制台,输入xgconsole -V,打印控制台版本表示配置成功

3.1.2 Linux环境变量配置

shell
1. 查看当前控制台所在的路径
[root@localhose xgconsole] pwd
/opt/xgconsole

2. 编辑用户根路径下的配置文件
[root@localhose xgconsole]# vim ~/.bash_profile

3. 尾部增加以下内容(XGCONSOLE_HOME后路径应替换成第一步打印的路径)
export XGCONSOLE_HOME=/opt/xgconsole
export PATH=$PATH:$XGCONSOLE_HOME

4. 或者在系统级配置文件增加第3步内容
[root@localhose console]# vim /etc/profile

5. 重新建立连接,输入xgconsole -V,打印控制台版本表示配置成功

提示

  1. 控制台程序独立包名,为了区分不同的版本,包含很多信息,命名规范为:程序名+操作系统名+CPU架构+版本号

  2. XuguDB产品包中包含的控制台程序,操作系统和CPU架构,与产品包的提供的信息相同。

3.2 启动控制台工具

3.2.1 命令行登录

提示

如果是Windows版本控制台,请在程序名后补充后缀.exe

  • 明文密码连接:
shell
xgconsole -s USESSL -h IP -P PORT -d DB_NAME -u USER_NAME -p USER_PASS [-e COMMAND]
  • 非明文密码连接(命令行回车后,需继续输入非明文密码):
shell
xgconsole -s USESSL -h IP -P PORT -d DB_NAME -u USER_NAME [-e COMMAND]

参数说明:

  • USESSL:是否使用加密,nssl表示不使用加密,ssl表示使用加密。内网或使用控制台导入数据,推荐使用nssl建立连接
  • IP:数据库连接的 IP 地址
  • PORT:端口号
  • DB_NAME:目标库名
  • USER_NAME:目标用户名
  • USER_PASS:目标用户名的密码
  • COMMAND:本次登录需执行的命令(执行 SQL 命令后退出)

示例:

shell
[root@localhost console]#./xgconsole -s nssl -h 127.0.0.1 -P 5138 -d SYSTEM -u SYSDBA -p SYSDBA

[root@localhost console]#./xgconsole -s nssl -h 127.0.0.1 -P 5138 -d SYSTEM -u SYSDBA -p SYSDBA -e "select 1 from dual ; "
命令行登陆 XGConsole图 3.1 命令行登陆 XGConsole

3.2.2 交互式脚本登录

控制台工具所在的路径提供了交互式登录脚本,方便用户在测试环境中,快速连接测试库。分别是xgconsole_local.shxgconsole.sh(Windows版是以 .bat 为后缀的同名文件)。

  • xgconsole_local.sh: 采用默认连接信息-s nssl -h 127.0.0.1 -P 5138 -d SYSTEM -u SYSDBA -p SYSDBA,可以复制此脚本,修改连接信息。优点是简化连接命令输入,缺点是会在 sh 脚本文件中保存数据库密码信息,仅用于测试库。
  • xgconsole.sh: 提供交互式输入连接信息,最终执行和非明文密码连接一样的命令。优点是简化连接命令输入,不会在 sh 脚本文件中保存数据库密码信息。Linux 版本控制台做了特殊处理,进程查看时,不会显示所有的连接信息。
交互式脚本登陆 XGConsole图 3.2 交互式脚本登陆 XGConsole

注意

  1. 不建议将生产库的用户名密码保存在脚本中。

  2. V2.2.2 之前的版本不建议在 Linux 命令行中使用明文登录命令,因为Linux下 ps -ef | grep xgconsole 查看进程时,可以看到密码明文。请使用非明文密码连接方式连接生产库。

  3. V2.2.2 及之后的 Linux 版本控制台在 ps -ef | grep xgconsole 查看进程时隐藏了密码,但保留其他连接信息。如果需要隐藏主机号、端口号等其他连接信息,可使用 --hidden-args 参数进行隐藏,例:./xgconsole -s nssl -h 127.0.0.1 -P 5138 -d SYSTEM -u SYSDBA -p SYSDBA --hidden-args.

四、功能介绍

4.1 命令行选项功能

选项描述
-V , --version查看控制台程序版本
-? , --help查看控制台程序帮助提示
-s指定传输加密模式(ssl表示加密,nssl表示不加密)
-h指定服务端连接IP
-P指定服务端连接端口
-d指定连接库名
-u指定连接用户名
-p指定连接用户的密码
-e附加执行SQL语句,用英文双引号包裹,执行完会停止控制台运行

4.2 连接与信息展示功能

使用控制台工具,连接数据库之后,可以参考以下列表,使用交互功能。

功能命令功能描述示例补充说明
$用户名切换连接的数据库用户SQL> $user_nameuser_name 为用户名。注意:只有密码相同的用户才能切换成功
exit退出数据库连接,并停止运行控制台SQL> exit;
desc查看表字段信息SQL> desc table_name;
SHOW CREATE TABLE查看表定义SQL> SHOW CREATE TABLE table_name;table_name 为表对象名
SHOW CREATE VIEW查看视图定义SQL> SHOW CREATE VIEW view_name;view_name 为视图对象名
SHOW CREATE TRIGGER查看触发器的定义信息SQL> SHOW CREATE TRIGGER trigger_name;trigger_name 为触发器对象名
SHOW CREATE FUNCTION查看存储函数的定义信息SQL> SHOW CREATE FUNCTION function_name;function_name 为自定义函数名
SHOW CREATE PROCEDURE查看存储过程的定义信息SQL> SHOW CREATE PROCEDURE procedure_name;procedure_name 为自定义过程名

4.3 缓冲区功能

缓冲区功能,是控制台将用户输入的命令缓存起来,并保存在缓冲区中,用户可以使用edit命令对缓冲区中的命令进行编辑,也可以使用/命令执行缓冲区中的命令。

功能命令功能描述补充说明
edit编辑缓冲区程序会打开默认的文本编辑器,对缓存中的内容进行修改,如果缓存中没有,可以新增内容。编辑结束后会在控制台打印出编辑后的内容。
clear_buffer清空缓冲区清空缓冲区中内容
/执行缓冲区中命令连接数据库后,在控制台中输入/符号,执行缓冲区中的命令

4.4 通用控制功能

通用功能,是控制台程序提供的一类控制操作。连接数据库后,执行命令操作。

功能命令功能描述补充说明
clear清屏清空当前屏幕显示并重新等待输入
[Tab]关键字补齐输入关键字的开头按Tab键补齐完整关键字,当前仅 Linux 版本支持。(需先 ctl tab on开启自动补全支持)
[Ctrl-C]取消当前输入输入一部分命令后,希望舍弃已输入的部分并从头开始
[Ctrl-C]取消当前输出当打印表内容含非常多记录行时,希望取消当前输出

4.5 控制台属性设置功能

控制台属性是程序在显示或设置默认参数时,提供调整控制台程序的功能。使用ctl命令设置参数,通常的命令格式为:ctl 参数名 参数值

属性描述默认值值可选值
aligned输出对齐功能onon/off
clob不显示CLOB时,CLOB占位符设置<CLOB><CLOB>
date_formatDate 或 DataTime 输出格式设置YYYY-MM-DD时间格式串,例如:YYYY-MM-DD
heading列名信息输出设置onon/off
NULL列空值输出设置<NULL>需要显示表示NULL的内容
pagesize结果集分页尺寸设置不分页分页显示的行数,建议10行
show_line_number行号输出设置offon/off
show_clobCLOB 内容是否显示设置offon/off
show_time时间显示设置offon/off
show_type数据类型和精度输出设置offon/off
show_use_time语句执行时间设置onon/off
sput_head输出到文件时候是否输出列名信息offon/off
tab按tab键自动补全(Linux下有效)offon/off
errquit发生错误后退出控制台(Linux下v2.2.7及以后版本有效)offon/off

提示

控制台程序提供了配置文件功能,用户可以在配置文件中设置参数。程序启动时,会读取配置文件,并根据配置文件内容设置参数。

4.5.1 输出对齐功能

  1. 功能:对于输出结果集,各个字段显示宽度不一致时,将结果集对齐,使列的显示宽度一致(默认值:对齐)
  2. 命令:ctl aligned on/off
  3. 示例:
sql
SQL> ctl aligned on

SQL> select * from REGION;

+----+-------------+--------------------------------------------------------------------------------------------------------------------+
| ID |     CH1     |                                                        CH2                                                         |
+----+-------------+--------------------------------------------------------------------------------------------------------------------+
| 0  | AFRICA      | lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to |
| 1  | AMERICA     | hs use ironic, even requests. s                                                                                    |
| 2  | ASIA        | ges. thinly even pinto beans ca                                                                                    |
| 3  | EUROPE      | ly final courts cajole furiously final excuse                                                                      |
| 4  | MIDDLE EAST | uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl       |
+----+-------------+--------------------------------------------------------------------------------------------------------------------+

SQL> ctl aligned off

SQL> select * from REGION;

ID | CH1 | CH2 |
------------------------------------------------------------------------------
0 |AFRICA |lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to |
1 |AMERICA |hs use ironic, even requests. s |
2 |ASIA |ges. thinly even pinto beans ca |
3 |EUROPE |ly final courts cajole furiously final excuse |
4 |MIDDLE EAST |uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl |

4.5.2 Date 或 DataTime 输出格式设置

  1. 功能:对于显示的日期或时间类型,设置其日期的输出格式(默认格式:yyyy-mm-dd)
  2. 命令:ctl date_format YYYY-MM-DD
  3. 示例:
sql
SQL> ctl date_format yyyy-mm-dd

SQL> select sysdate();

+--------------------------+
|          EXPR1           |
+--------------------------+
| 2025-05-29 15:32:08.294  |
+--------------------------+

4.5.3 列名信息输出设置

  1. 功能:用于设置是否显示列名信息(默认值: 显示)
  2. 命令:ctl heading on/off
  3. 示例:
sql
SQL> ctl heading off

heading off

SQL> select 1 as col_name;

+----------+
| 1        |
+----------+

SQL> ctl heading on

heading on

SQL> select 1 as col_name;

+----------+
| COL_NAME |
+----------+
| 1        |
+----------+

4.5.4 列空值输出设置

  1. 功能:用于设置空值用指定标记替代显示(默认值: <NULL>
  2. 命令:ctl NULL <NULL>
  3. 示例:
sql
SQL> ctl NULL <这是空值>

null will be display as <这是空值>

SQL> select NULL;

+------------+
|   EXPR1    |
+------------+
| <这是空值>  |
+------------+

4.5.5 结果集分页尺寸设置

  1. 功能:用于设置结果集是否分页显示,以及按多少条记录进行分页(默认值:不分页)
  2. 命令:ctl pagesize 10
  3. 示例:
sql
SQL> ctl pagesize 10;

pagesize 10

SQL> show tables;

+-----------------------+
|      TABLE_NAME       |
+-----------------------+
| TEST_LO               |
| NATION                |
| TEST                  |
| TCL_TEST              |
| TEST_BLOB             |
| TEST_CLOB             |
| TEST_SQLLDR           |
| TEST_SQLLDR_CHAR      |
| TEST_SQLLDR_FLOAT     |
| TEST_SQLLDR_DATE_TIME |
+-----------------------+

注意

0 表示不分页;大于0 表示分页,分页的记录数

开启分页功能时:

• 键入“q”、“Q”、“Ctrl+C”,退出结果集展示,并且不展示剩余结果集。

• 键入“ESC”,退出结果集展示,并且展示剩余结果集。

• 键入其他,展示下一页结果集。

4.5.6 行号输出设置

  1. 功能:用于设置在输入 SQL 命令时,是否显示行号(默认值:不显示)
  2. 命令:ctl show_line_number on/off
  3. 示例:
sql
SQL> ctl show_line_number on

show_line_number on

SQL> select
2    1;

+-------+
| EXPR1 |
+-------+
| 1     |
+-------+

(1 row)
Use time:0 ms.

SQL> ctl show_line_number off

show_line_number off

SQL> select
     1;

+-------+
| EXPR1 |
+-------+
| 1     |
+-------+

(1 row)
Use time:0 ms.

提示

开启 show_line_number 后,输入跨行 SQL 语句时,每行 SQL 语句的行号会显示在 SQL 语句的左侧。

关闭 show_line_number 后,输入跨行 SQL 语句时,不显示行号。

4.5.7 时间显示设置

  1. 功能:用于设置在输入第一行 SQL 命令时,是否显示时间(默认值:不显示)
  2. 命令:ctl show_time on/off
  3. 示例:
sql
SQL> ctl show_time on

show_time on

15:54:27  SQL> ctl show_time off

show_time off

4.5.8 数据类型和精度输出设置

  1. 功能:用于设置在输入第一行 SQL 命令时,是否显示时间(默认值:不显示)
  2. 命令:ctl show_type on/off
  3. 示例:
sql
SQL> ctl show_type on;

show_type on

SQL> select 1, 2::integer, 'abc';

+----------------+----------------+----------------+
| EXPR1(TINYINT) | EXPR2(INTEGER) | EXPR3(CHAR(5)) |
+----------------+----------------+----------------+
| 1              | 2              | abc            |
+----------------+----------------+----------------+

(1 row)
Use time:0 ms.

SQL> ctl show_type off;

show_type off

SQL> select 1, 2::integer, 'abc';

+-------+-------+-------+
| EXPR1 | EXPR2 | EXPR3 |
+-------+-------+-------+
| 1     | 2     | abc   |
+-------+-------+-------+

(1 row)
Use time:0 ms.

4.5.9 语句执行时间设置

  1. 功能:用于设置是否显示 SQL 命令的执行时间(默认值:显示)
  2. 命令:ctl show_use_time on/off
  3. 示例:
sql
SQL> ctl show_use_time off

show_use_time off

SQL> select 1;

+-------+
| EXPR1 |
+-------+
| 1     |
+-------+

(1 row)

SQL> ctl show_use_time on

show_use_time on

SQL> select 1;

+-------+
| EXPR1 |
+-------+
| 1     |
+-------+

(1 row)
Use time:0 ms.

4.5.10 输出到文件时候是否输出列名信息

  1. 功能:用于设置导出结果集时是否输出列名信息(默认值:不显示)
  2. 命令:ctl sput_head on/off
  3. 示例:
sql
SQL> ctl sput_head on

sput_head on

SQL> select * from region; >$ resultset_head.csv

Total:5 record
Use time:0 ms.

SQL> ctl sput_head off

sput_head off

SQL> select * from region; >$ resultset_without_head.csv

Total:5 record
Use time:0 ms.

查看文件内容:

shell
[root@localhose console]# cat resultset_head.csv
ID,CH1,CH2
0,"AFRICA","lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to"
1,"AMERICA","hs use ironic, even requests. s"
2,"ASIA","ges. thinly even pinto beans ca"
3,"EUROPE","ly final courts cajole furiously final excuse"
4,"MIDDLE EAST","uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl"

[root@localhose console]# cat resultset_without_head.csv
0,"AFRICA","lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to"
1,"AMERICA","hs use ironic, even requests. s"
2,"ASIA","ges. thinly even pinto beans ca"
3,"EUROPE","ly final courts cajole furiously final excuse"
4,"MIDDLE EAST","uickly special accounts cajole carefully blithely close requests. carefully final asymptotes haggle furiousl"

4.5.11 配置文件设置(可选)

功能:配置文件中可对控制台的属性进行设置,程序启动时读取该文件,并设置控制台对应属性,支持设置的属性包括控制台属性设置功能中支持的属性。

说明:

  1. 配置文件命名为 config.ini
  2. 配置文件需要与控制台程序位于同目录下
  3. 控制台程序压缩包内提供默认的配置文件 config.ini
  4. 根据需要按照默认config.ini 文件的提示进行修改即可
  5. 若该文件丢失,控制台程序不会自动生成该配置文件,请自行创建

注意

  1. V2.2.2版本之前,配置文件命名为 xgconsole.ini,V2.2.2版本及之后配置文件命名为 config.ini
  2. 如果用户从 V2.2.2 版本之前升级到 V2.2.2 及之后版本且已经配置过 xgconsole.ini,控制台应用程序会自动将原 xgconsole.ini 文件进行重命名为 xgconsole.ini.bak,并配置文件中内容拷贝到控制台应用程序同目录下的 config.ini中,因此用户不需要再手动配置 config.ini
  3. 控制台v2.2.7及以后版本,配置文件新增属性INPUT_MODE,用于指示控制台输入模式(仅Linux下有效)。
  4. INPUT_MODE默认为0,表示用户交互输入采用readline库读取,重定向或管道输入、文件输入采用fgets读取;为1表示全部输入用fgets读取;为2表示全部输入用readline读取。

4.6 控制台属性重置功能

连接数据库后,如果设置了某些参数,又需要还原时,可以执行下面对应的参数重置命令。

功能命令功能描述示例
reset heading列头信息输出重置SQL> reset heading
reset NULL列空值输出重置SQL> reset NULL
reset pagesize结果集分页尺寸重置SQL> reset pagesize
reset show_line_number行号输出重置SQL> reset show_line_number
reset show_type数据类型和精度输出重置SQL> reset show_type
reset show_time时间显示重置SQL> reset show_time
reset sput_head输出到文件是否显示列名信息重置SQL> reset sput_head
reset show_use_time语句执行时间显示重置SQL> reset show_use_time
reset clob不显示CLOB时,CLOB占位符重置SQL> reset clob
reset show_clobCLOB 内容是否显示重置SQL> reset show_clob

4.7 数据导入导出功能

4.7.1 数据导入

使用控制台,可以将文本数据导入到数据库中,也可以将数据库中的数据,导出成文本数据。

a. 三种导入方式说明
命令说明
execfile从指定文件中执行SQL命令,类似 MySQL 的source命令、PostgreSQL 的\i命令
sqlldr导出的结果集文件导入到数据库的表中,需要提前创表
tabldr导出的结果集文件导入到数据库的表中,需要提前创表。相较于sqlldrtabldr支持多线程并行导入,导入速度更快,但执行时也会占用更多系统资源
b. 导入sql文件到数据库
  1. 功能:将指定 SQL 文件导入数据库中。
  2. 命令:execfile d:/consel.sql
  3. 示例:
sql
SQL> execfile d:/consel.sql
c. SQLLDR 导入结果集文件到数据库
  1. 功能:SQLLDR 是文件导入命令,可以将控制台工具或者其他工具导出的结果集文件导入到数据库的表中,需要注意的是文件的列数要与表的列数一致,并且是顺序对应的关系。
  2. 命令:sqlldr
  3. 示例:
sql
SQL> sqlldr table=REGION datafile=/tmp/region.txt ft='|' rt=X'0a' log=/tmp/load.log errlog=/tmp/loaderr.log mode=replace imp_type=block

参数说明:

  • sqlldr:导入命令标识符
  • table:导入的目标表名
  • datafile:数据文件的路径
  • ft:列分隔符,一般为'|' 或 ','
  • rt:行分隔符,一般为X'0d0a' 或 X'0a',其中X'0d0a'表示'\r\n',X'0a'表示 '\n'
  • log:可选,SQLLDR 运行日志记载路径
  • errlog:可选,SQLLDR 错误日志记载路径
  • mode:可选,导入方式,可设为 append 或 replace,默认为 append
  • imp_type:可选,导入类型,可设为 block、insert、auto 或 store
    • block:按块导入。
    • insert:插入导入。
    • auto:自动分配,V12 及以上版本的数据库不支持此功能。
    • store:存储导入,V12 及以上版本的数据库不支持此功能
  • csv_deal:可选,格式化 CSV 文件,去除单元格开头双引号,可设为 true 或 false,默认为 false
  • last_ft:可选,每行最后一列数据是否自带列分标志位,可设为 true 或 false,默认为 false。示例:数据表有 A、B、C 共 3 个列,此时文件数据为 last_ft=true;若文件数据为 1、2,则 last_ft=false。

提示

  1. 控制台 V1.4.6 版本开始支持 last_ft 参数
  2. 文件后缀名时为 .csv,程序内部会将ft设置替换为 ,
  3. 如果导入时,文件中有数据,但提示 load total 0 record 0 bad rows.,可能原因是行分隔符设置不正确。请借助 VSCode 等编辑器查看文件的行分割符,并确认 rt 设置是否正确
d. TABLDR 导入结果集文件到数据库
  1. 功能:TABLDR 也是文件导入命令,和 SQLLDR 一样可以将控制台工具或者其他工具导出的结果集文件导入到数据库的表中,TABLDR 导入的效率高于 SQLLDR。
  2. 命令:tabldr
  3. 示例:
sql
SQL> tabldr table=REGION datafile=/tmp/region.txt ft='|' rt=X'0a' log=/tmp/load.log errlog=/tmp/loaderr.log parse_para=2 ins_para=2 mode=replace

注意

使用 TABLDR 功能前,需要先执行“set enable_stream_import on;”,开启数据库流导入功能。

参数说明

  • tabldr:导入命令标识符
  • table:导入的目标表名
  • datafile:数据文件的路径
  • ft:列分隔符,一般为'|' 或 ','
  • rt:行分隔符,一般为X'0d0a' 或 X'0a',其中X'0d0a'表示'\r\n',X'0a'表示 '\n'
  • log:可选,SQLLDR 运行日志记载路径
  • errlog:可选,SQLLDR 错误日志记载路径
  • parse_para:可选,服务端解析数据线程数,从 1 开始,默认为 1
  • ins_para:可选,服务端插入数据线程数,从 1 开始,默认为 1
  • mode:可选,导入方式,可设为 append 或 replace,默认为 append
  • csv_deal:可选,格式化 CSV 文件,去除单元格开头双引号,可设为 true 或 false,默认为 false
  • last_ft:可选,每行最后一列数据是否自带列分标志位,可设为 true 或 false,默认为false。示例:数据表有 A、B、C 共 3 个列,此时文件数据为 last_ft=true;若文件数据为 1、2,则 last_ft=false。

提示

  1. 控制台 V1.4.6 版本开始支持 last_ft 参数
  2. 文件后缀名时为 .csv,程序内部会将ft设置替换为 ,
  3. 如果导入时,文件中有数据,但提示 load total 0 record 0 bad rows.,可能原因是行分隔符设置不正确。请借助 VSCode 等编辑器查看文件的行分割符,并确认 rt 设置是否正确

异常处理

数据库新增参数 stream_import_error 用于控制 TABLDR 导入异常数据时的处理模式,用户可根据个人需求自行设置该参数。

  • 0:严格报错,数据库解析时出现异常连接断开,控制台工具退出停止导入
  • 1:跳过错误行并记载日志,数据库解析时出现异常则忽略异常数据并将异常数据记录至TRACE.LOG 中并继续导入后续数据
  • 2:跳过错误行不记载日志,数据库解析时出现异常则忽略异常数据且不记载日志继续导入后续数据
e. 导入 CLOB
  1. 功能:使用控制台可以将 CLOB 大对象导入到表中
  2. 示例:
sql
SQL> insert into test(b) values(?); <% /tmp/t3.txt;
f. 导入 BLOB
  1. 功能:使用控制台可以将 BLOB 大对象导入到表中
  2. 示例:
sql
SQL> insert into test(a) values(?); <# /tmp/t1.png;

注意

CLOB 与 BLOB 路径支持带空格的路径,但是该路径需要使用 "" 括起,不带空格的路径可不使用"",如
insert into clob_2 values(1, ?, ?); <% "/tmp/t tmp/cl 1.txt" <% /tmp/t_tmp/cl_2.txt

4.7.2 数据导出

a. 导出结果集
  1. 功能:使用控制台可以将 SELECT 查询的结果导出到文本文件中,导出的数据默认以'|'作为分隔符(csv 文件以','作为分隔符)。导出的结果集中不能包含大对象,大对象需要单独导出。
  2. 示例:
sql
SQL> select * from test; >$ /tmp/test_select.txt;

提示

  1. Linux 控制台导出的结果集文件以 \n 作为行分隔符
  2. Windows 控制台导出的结果集文件在 V2.1.1 版本以前以 \r\n 作为行分隔符,V2.1.1 及之后的版本以 \n 作为行分隔符
b. 导出 CLOB
  1. 功能:使用控制台可以导出 SELECT 查询的 CLOB 大对象
  2. 示例:
sql
SQL> select b from test; >% /mnt/t4.txt;
c. 导出 BLOB
  1. 功能:使用控制台可以导出 SELECT 查询的 BLOB 大对象
  2. 示例:
sql
SQL> select a from test; ># /tmp/t2.png;
d. 控制台输出到文件
  1. 功能:将控制台输出的内容实时同步输出至指定文件中
  2. 示例:
sql
SQL> spool d:/console.txt

注意

  1. 该指定的文件将持久化保存
  2. 输入语句时,被 Ctrl+C 中断的SQL语句,不会实时同步输出至指定文件
  3. 只有输入此命令后,控制台的所有打印输出才会实时同步输出至指定文件中
  4. 该命令只对当次启动的控制台连接有效;下次启动时,重新输入该命令才会同步输出

4.8 初始化登录功能

  1. 功能:用于在用户启动控制台时自动执行预设的命令
  2. 使用场景:由于数据库有一些默认参数设置,比如会话字符集、是否允许流式导入。因此,为了避免用户每次连接数据库时都手动设置这些参数, xgconsole 提供了初始化登录功能。用户可以在 xgconsole 的可执行文件的相同目录下的配置文件 ini_script.sql 中配置一些初始化登录的 SQL 命令,这些命令会在用户登录时自动执行。
  3. 示例:
  • 设置之前
shell
# 打印ini_script.sql中内容
[root@localhose ~] cat ini_script.sql
-- Type your SQL statement for initialization in the field below.

[root@localhose ~]  ./xgconsole -s nssl -h 127.0.0.1 -P 5138 -d SYSTEM -u SYSDBA -p SYSDBA
...
SQL> show char_set

+----------+
| CHAR_SET |
+----------+
| UTF8     |
+----------+

(1 row)
Use time:0 ms.
  • 设置之后
shell
# 打印修改后ini_script.sql中内容
[root@localhose ~]  cat ini_script.sql
-- Type your SQL statement for initialization in the field below.

set char_set to gbk;
[root@localhose ~] ./xgconsole -s nssl -h 127.0.0.1 -P 5138 -d SYSTEM -u SYSDBA -p SYSDBA
...
SQL> show char_set

+----------+
| CHAR_SET |
+----------+
| GBK      |
+----------+

(1 row)
Use time:0 ms.

提示

  1. 控制台程序压缩包内提供默认的配置文件 ini_script.sql
  2. 该文件若丢失,不会自动创建,而是需要手动创建
  3. V2.2.2版本之前,初始化配置文件命名为 xgconsole_init.sql,V2.2.2版本及之后配置文件命名为 ini_script.sql
  4. 如果用户从 V2.2.2 版本之前升级到 V2.2.2 及之后版本且已经配置过 xgconsole_init.sql,控制台应用程序会自动将原 xgconsole_init.sql 文件进行重命名为 xgconsole_init.sql.bak,并配置文件中内容拷贝到控制台应用程序同目录下的 ini_script.sql中,因此用户不需要再手动配置 ini_script.sql

五、兼容V1版本控制台连接方式(示例)

5.1 旧版本控制台重命名

shell
mv /usr/bin/xgconsole       /usr/bin/xgconsole1
mv /usr/sbin/xgconsole      /usr/sbin/xgconsole1
mv /usr/local/bin/xgconsole /usr/local/bin/xgconsole1

5.2 下载新版本控制台

  1. 下载地址:虚谷控制台V2.0
  2. 可执行文件解压后所在的路径,如:/home/user/xgconsole_Linux_amd64_2.x.x

5.3 建立可执行文件映射

建立可执行文件映射可以在不修改可执行文件的情况下,利用旧版控制台的连接方式使用新版控制台。

具体实现可通过简单地在 /usr/bin/ 目录下bash脚本的方式,将旧版控制台连接参数映射成新版控制台连接参数。

5.3.1 创建文件

shell
[root@localhose ~] vi /usr/bin/xgconsole

输入内容

shell
#!/bin/sh
# 注意 path 路径为控制台解压后的路径
path=/home/user/xgconsole_Linux_amd64_2.x.x

if [ "$#" -eq 1 ]; then
    $path $1
elif [ "$#" -eq 6 ]; then
    $path -s $1 -h $2 -P $3 -d $4 -u $5 -p $6
elif [ "$#" -eq 7 ]; then
    $path -s $1 -h $2 -P $3 -d $4 -u $5 -p $6 -e "$7"
fi
exit 1

5.3.2 添加可执行权限

shell
chmod +x /usr/bin/xgconsole

5.4 测试

shell
xgconsole -V
xgconsole -?
xgconsole nssl 192.168.66.125 5138 SYSTEM SYSDBA
xgconsole nssl 192.168.66.125 5138 SYSTEM SYSDBA "show tables;"

六、其他说明

6.1 输入的结束判定

  1. dml语句、ddl语句、with子句等遇到分号+换行符判定结束
  2. 特殊的块语句、创建存储函数、过程、包、触发器等需要额外输入 '/' 以结束输入
  3. 导出大对象,遇到分号+换行符结束
  4. ctl、set、reset、sqlldr、tabldr、show等遇到换行符判定结束(分号可有可无)