暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

hubble数据库CSV数据迁移

原创 做人不能太段德 2023-01-31
552

hubble数据库CSV数据迁移

步骤一 CSV格式数据准备

您将需要为每个表导出一个CSV文件,并具有以下要求:

  1. 文件必须为有效的CSV格式,但请注意,分隔符必须为单个字符。要使用逗号以外的其他字符(例如制表符),请使用delimiter设置自定义分隔符。

  2. 文件必须为UTF-8编码。

  3. 如果字段中出现以下字符之一,则该字段必须用双引号引起来:

  • 分隔符(,)为默认的情况
  • 双引号("
  • 换行符(\n
  • 回车(\r
  1. 如果使用双引号将字段括起来,则必须在字段内部出现双引号,然后在其前面加上另一个双引号,以对其进行转义。例如:“aaa”,“b”“bb”,“ccc”。

  2. 如果列是类型BYTES,则它可以是有效的UTF-8字符串,也可以是以开头的十六进制编码的字节常量\x。例如,一个字段,其值应是字节1,2将被写为\x0102。

步骤二:将数据文件放置在集群可访问到的位置

URL必须使用以下格式:

[scheme]://[host]/[path]?[parameters]
类型 schema host 参数 示例
http http 主机地址 N/A http://localhost:8080/mydatest.csv
NFS/Local nodelocal 节点ID或为空 N/A nodelocal://n/path/mydatest,nodelocal://n/path/mydatest2

步骤三:将数据迁移到Hubble数据库中

hubble库中不存在的表的数据迁移

IMPORT TABLE employees ( emp_no INT PRIMARY KEY, birth_date DATE NOT NULL, first_name STRING NOT NULL, last_name STRING NOT NULL, gender STRING NOT NULL, hire_date DATE NOT NULL ) CSV DATA ('http://localhost:3000/employees.csv');
root@tytest16:26257/hubble_demo> IMPORT TABLE employees (
                              ->     emp_no INT PRIMARY KEY,
                              ->     birth_date DATE NOT NULL,
                              ->     first_name STRING NOT NULL,
                              ->     last_name STRING NOT NULL,
                              ->     gender STRING NOT NULL,
                              ->     hire_date DATE NOT NULL
                              ->   ) CSV DATA ('http://localhost:3000/employees.csv');
        job_id       |  status   | fraction_completed |  rows  | index_entries | system_records |  bytes    
+--------------------+-----------+--------------------+--------+---------------+----------------+----------+
  535422568764833793 | succeeded |                  1 | 300024 |             0 |              0 | 12134341  
(1 row)

Time: 3.078573146s

hubble库中已存在表的数据迁移

IMPORT INTO employees (emp_no, birth_date,first_name,last_name,gender,hire_date) CSV DATA ('http://localhost:3000/employees.csv')

在数据导入的过程中,字段中有可能存在特殊字符,如果字段存在有双引号(例如:“北京”)或者字段有转义字符(例如:shanghai\pudong),导入时候可以参考以下参数:

  • fields_terminated_by用于单个字符的分割
  • fields_enclosed_by 用于将字段的内容包装起来的符号的情况,例如:双引号
  • fields_escaped_by用于字段中包含的转义字符的情况,例如:\

如下一张表:

create table test (id int,cust_address string,aml string);

文件test.txt里面的样例数据如下:

1,"beijing",qwe\123
2,"shanghai",env\456
import into test delimited data ('nodelocal://1/test.txt') with fields_terminated_by = e',', fields_enclosed_by='"', fields_escaped_by='\';
        job_id       |  status   | fraction_completed | rows | index_entries | bytes
---------------------+-----------+--------------------+------+---------------+--------
  779219645387079681 | succeeded |                  1 |    2 |             0 |    78

多文件导入

IMPORT TABLE employees ( emp_no INT PRIMARY KEY, birth_date DATE NOT NULL, first_name STRING NOT NULL, last_name STRING NOT NULL, gender STRING NOT NULL, hire_date DATE NOT NULL )csv data( 'http://192.168.100.101/tpdata1106/t05_on_board_order_evt_1y/02/xaa', 'http://192.168.100.101/tpdata1106/t05_on_board_order_evt_1y/02/xab', 'http://192.168.100.101/tpdata1106/t05_on_board_order_evt_1y/02/xac', 'http://192.168.100.101/tpdata1106/t05_on_board_order_evt_1y/02/xad', 'http://192.168.100.101/tpdata1106/t05_on_board_order_evt_1y/02/xae', 'http://192.168.100.101/tpdata1106/t05_on_board_order_evt_1y/02/xaf' ) with nullif = '\N',delimiter = e'|';

配置参数

以下选项可用于IMPORT ... CSV

列定界符

delimiter选项用于设置Unicode字符,该字符标记每列的结尾。 默认值:,

用法示例:

IMPORT TABLE employees ( emp_no INT PRIMARY KEY, birth_date DATE NOT NULL, first_name STRING NOT NULL, last_name STRING NOT NULL, gender STRING NOT NULL, hire_date DATE NOT NULL ) CSV DATA ('http://localhost:3000/employees.csv') WITH delimiter = e'\t';
root@tytest16:26257/hubble_demo> IMPORT INTO employees (emp_no, birth_date,first_name,last_name,gender,hire_date) CSV DATA ('http://localhost:3000/employees.csv');
        job_id       |  status   | fraction_completed |  rows  | index_entries | system_records |  bytes    
+--------------------+-----------+--------------------+--------+---------------+----------------+----------+
  535428382456872961 | succeeded |                  1 | 300024 |             0 |              0 | 12134341  
(1 row)

Time: 5.768633441s

跳过注释行

comment选项确定哪个Unicode字符标记数据中要跳过的行。

用法示例:

IMPORT TABLE employees ( emp_no INT PRIMARY KEY, birth_date DATE NOT NULL, first_name STRING NOT NULL, last_name STRING NOT NULL, gender STRING NOT NULL, hire_date DATE NOT NULL ) CSV DATA ('http://localhost:3000/employees.csv') WITH comment = '#';

跳过标题行

skip选项确定导入文件时要跳过的标题行数。

用法示例:

IMPORT TABLE employees ( emp_no INT PRIMARY KEY, birth_date DATE NOT NULL, first_name STRING NOT NULL, last_name STRING NOT NULL, gender STRING NOT NULL, hire_date DATE NOT NULL ) CSV DATA ('http://localhost:3000/employees.csv') WITH skip = '2';

空字符串

nullif选项定义应将哪个字符串转换为NULL

用法示例:

IMPORT TABLE employees ( emp_no INT PRIMARY KEY, birth_date DATE NOT NULL, first_name STRING NOT NULL, last_name STRING NOT NULL, gender STRING NOT NULL, hire_date DATE NOT NULL ) CSV DATA ('http://localhost:3000/employees.csv') WITH nullif = '';

文件压缩格式

decompress选项用于指定需导入的csv文件压缩格式,默认不使用压缩格式

可选的压缩格式包括:gzipbzipnone

IMPORT TABLE employees ( emp_no INT PRIMARY KEY, birth_date DATE NOT NULL, first_name STRING NOT NULL, last_name STRING NOT NULL, gender STRING NOT NULL, hire_date DATE NOT NULL ) CSV DATA ('http://localhost:3000/employees.csv.gz') WITH decompress = 'gzip';

行限制数

row_limit选项确定要从表中导入的行数。它有助于在执行更耗时和更耗费资源的导入之前快速查找错误。

用法示例:

IMPORT TABLE employees ( emp_no INT PRIMARY KEY, birth_date DATE NOT NULL, first_name STRING NOT NULL, last_name STRING NOT NULL, gender STRING NOT NULL, hire_date DATE NOT NULL ) CSV DATA ('http://localhost:3000/employees.csv') WITH row_limit = '10';
转载hubble数据库CSV数据迁移
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论