导出导入数据

规则

 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文件

-e,--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

  1. DELIMITER:用于指定数据文件中字段之间的分隔符。当导出数据时,数据文件中的字段将使用该分隔符进行分割。例如,如果设置DELIMITER为逗号(,),则数据文件中的字段将使用逗号进行分隔。
  2. DELIMITER_HEADER:用于指定数据文件中包含列名的行在导出过程中的处理方式。加入这个参数时,表示数据文件的第一行是列名,并且不会被导入或导出。如果不设置这个参数,表示数据文件的第一行是数据,会被导入或导出。
  3. DELIMITER_UNQUOTED:将分隔符视为常规字符,即使它用引号括起来。这对于包含带引号的字符串的文件很有用,其中分隔符可以用作字符串的一部分。
  4. 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