规则
bin/hubble-sql.sh --server=https:hostname:port --user=username --password --catalog=catalogname --schema=schemaname --output-format <otput-format> --execute='query sql' > filename
--server <server> hubble提供服务的地址
--user <user> hubble的用户名
--password <password> hubble的密码
--catalog <catalog> 指定数据源
--schema <schema(database)> 指定数据源下的库
--session <session> 指定seesion参数(完整参数可通过show session查看)
--f,--file <flie> 指定要执行的sql文件
--execute <execute> 执行sql进行查询(需要执行的sql需要用''引号包起来)
--output-format <output-format> 执行查询输出的格式,包括ALIGNED, VERTICAL, JSON, CSV, TSV等格式,(默认CSV格式输出)
--delimiter <|+|> 指定数据导出分隔符 支持多字符分隔符
--output-charset utf-8 指定数据编码方式 默认utf-8
--hubvar<name> 外部输入参数名称
例子
export HUBBLE_PASSWORD=hubble;export HUBBLE_PASSWORD=hubble; bin/hubble-sql.sh --server=https://poc-hubble01.hubbledb.cn:18080 --user=hubble --password --output-format CSV_UNQUOTED --execute='select * from hubble.zl.f2' > f2.txt
export HUBBLE_PASSWORD=hubble; bin/hubble-sql.sh --server=https://poc-hubble01.hubbledb.cn:18080 --user=hubble --password --output-format TSV --execute='select * from hubble.zl.f2' > /home/hubble/f3.txt
规则
LOAD DATA [PATH]/LOCAL INPATH [pathlocation] IN TO TABLE table_name [PARTITTION]
描述
导入数据文件
例子
load data local inpath '/opt/zl/d_data/v3.txt' into table p2_t2 PARTITION(date_p='20230320',biz_date='3');
加载分区表需要手动刷新数据
call system.sync_partition_metadata(
schema_name => 'zl',
table_name => 'p2_t2',
mode => 'FULL',
case_sensitive => true
);
从本地导入无分区数据
load data local inpath '/data/lsc/test01.txt' into table hubble.default.lsctest01;
从hubblestore中导入无分区数据
load data inpath '/hubbledata/dt/test02.txt' into table hubble.default.lsctest01;
默认从配置文件读取hubblestore链接地址
使用语法:
[hubble@hubble01 hubbleap-5.2.1]$ bin/hubble-sql.sh --server=hubbleip地址+端口 --us
er=用户名 --catalog=数据源 --password --execute"执行sql" --output-format=输出格式 --delimiter=分隔符 --output-charset=字符集编码 >输出文件名
--output-format
- DELIMITER:用于指定数据文件中字段之间的分隔符。当导出数据时,数据文件中的字段将使用该分隔符进行分割。例如,如果设置DELIMITER为逗号(,),则数据文件中的字段将使用逗号进行分隔。
- DELIMITER_HEADER:用于指定数据文件中包含列名的行在导出过程中的处理方式。加入这个参数时,表示数据文件的第一行是列名,并且不会被导入或导出。如果不设置这个参数,表示数据文件的第一行是数据,会被导入或导出。
- DELIMITER_UNQUOTED:将分隔符视为常规字符,即使它用引号括起来。这对于包含带引号的字符串的文件很有用,其中分隔符可以用作字符串的一部分。
- DELIMITER_HEADER_UNQUOTED: 将标题行中的分隔符视为常规字符,即使它用引号引起来也是如此。这对于 CSV文件很有用,其中分隔符通常用于分隔标题行中的列。
--delimiter ,
[hubble@hubble01 bin]$ ./hubble-sql.sh --server=https://hubble01.hubbledb.cn:7077 --user=hubble --
catalog=hubble --password --output-format='DELIMITER_HEADER' --delimiter=',' --execute "select
* from hubble.zh_wh_odsfff.t12"
"f1","f2","f3"
"l","18","男 "
"c","20","男 "
"w","22","女 "
不指定 --delimiter= 参数时默认分隔符为,
[hubble@hubble01 bin]$ ./hubble-sql.sh --server=https://hubble01.hubbledb.cn:7077 --user=hubble --
catalog=hubble --password --output-format='DELIMITER_HEADER' --execute "select
* from hubble.zh_wh_odsfff.t12"
"f1","f2","f3"
"l","18","男 "
"c","20","男 "
"w","22","女 "
不指定--output-format=
参数时默认为不带表头
[hubble@hubble01 bin]$ ./hubble-sql.sh --server=https://hubble01.hubbledb.cn:7077 --user=hubble --c
atalog=hubble --password --execute "select * from hubble.zh_wh_odsfff.t12" > n.csv
[hubble@hubble01 bin]$ cat n.csv
"l","18","男 "
"c","20","男 "
"w","22","女 "
特殊分隔符' |+| '
[hubble@hubble01 bin]$ ./hubble-sql.sh --server=https://hubble01.hubbledb.cn:7077 --user=hubble --c
atalog=hubble --password --output-format=DELIMITER_HEADER --delimiter='|+|' --execute "select *
from hubble.zh_wh_odsfff.t12"
"f1"|+|"f2"|+|"f3"
"l"|+|"18"|+|"男 "
"c"|+|"20"|+|"男 "
"w"|+|"22"|+|"女 "
特殊分隔符' | '
[hubble@hubble01 bin]$ ./hubble-sql.sh --server=https://hubble01.hubbledb.cn:7077 --user=hubble --
catalog=hubble --password --output-format='DELIMITER_HEADER' --delimiter=' | ' --execute "select
* from hubble.zh_wh_odsfff.t12"
"f1" | "f2" | "f3"
"l" | "18" | "男 "
"c" | "20" | "男 "
"w" | "22" | "女 "
特殊分隔符 '\x01|\01'
[hubble@hubble01 bin]$ ./hubble-sql.sh --server=https://hubble01.hubbledb.cn:7077 --user=hubble --
catalog=hubble --password --output-format='DELIMITER_HEADER' --delimiter='\x01|\01' --execute "s
elect * from hubble.zh_wh_odsfff.t12"
"f1"\x01|\01"f2"\x01|\01"f3"
"l"\x01|\01"18"\x01|\01"男 "
"c"\x01|\01"20"\x01|\01"男 "
"w"\x01|\01"22"\x01|\01"女 "
--output-charset=utf-8 or gbk 等等
写入文件
指定保留表头 指定分隔符\x01|\01 输出结果到b.csv文件
[hubble@hubble01 bin]$ ./hubble-sql.sh --server=https://hubble01.hubbledb.cn:7077 --user=hubble --
catalog=hubble --password --output-format=DELIMITER_HEADER --delimiter='\x01|\01' --execute "s
elect * from hubble.zh_wh_odsfff.t12" > b.csv
[hubble@hubble01 bin]$ cat b.csv
"f1"\x01|\01"f2"\x01|\01"f3"
"l"\x01|\01"18"\x01|\01"男 "
"c"\x01|\01"20"\x01|\01"男 "
"w"\x01|\01"22"\x01|\01"女 "
output-format=DELIMITER_UNQUOTED
,为不指定表头,并分隔符视为常规字符
[hubble@hubble01 bin]$ ./hubble-sql.sh --server=https://hubble01.hubbledb.cn:7077 --user=hubble --
catalog=hubble --password --output-format=DELIMITER_UNQUOTED --delimiter='\x01|\01' --execute
"select * from hubble.zh_wh_odsfff.t12" > d.csv
[hubble@hubble01 bin]$ cat d.csv
l\x01|\0118\x01|\01男
c\x01|\0120\x01|\01男
w\x01|\0122\x01|\01女
output-format=DELIMITER_HEADER_UNQUOTED
,为指定表头,并分隔符视为常规字符
[hubble@hubble01 bin]$ ./hubble-sql.sh --server=https://hubble01.hubbledb.cn:7077 --user=hubble --
catalog=hubble --password --output-format=DELIMITER_HEADER_UNQUOTED --delimiter='\x01|\01' --e
xecute "select * from hubble.zh_wh_odsfff.t12" > b.csv
[hubble@hubble01 bin]$ cat b.csv
f1\x01|\01f2\x01|\01f3
l\x01|\0118\x01|\01男
c\x01|\0120\x01|\01男
w\x01|\0122\x01|\01女
output-charset
字符集
[hubble@hubble01 bin]$ ./hubble-sql.sh --server=https://hubble01.hubbledb.cn:7077 --user=hubble --
catalog=hubble --password --output-format=DELIMITER_HEADER_UNQUOTED --delimiter='\x01|\01' --output-charset gbk --e
xecute "select * from hubble.zh_wh_odsfff.t12" > b.csv