导出mysql数据为txt,csv格式,然后再导入到doris中

数据库名:test1
数据表名:huanma_ceshi
数据库中配置的允许导出文件保存的路径:/mysql8/data/mysql-files

doris中创建库,表

CREATE database demo;

mysql中表结构
CREATE TABLE huanma_ceshi (
id bigint NOT NULL AUTO_INCREMENT,
number int DEFAULT NULL,
createtime datetime DEFAULT NULL,
PRIMARY KEY (id) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=54055 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='测试回收数量表';

doris中表结构
CREATE TABLE IF NOT EXISTS huanma_ceshi
(
id bigint NOT NULL,
number int DEFAULT NULL,
createtime datetime DEFAULT NULL
)
unique key(id)
DISTRIBUTED BY HASH(id) BUCKETS 1
PROPERTIES (
"replication_num" = "1"
);

mysql导出数据

会在指定路径下创建跟数据表同名的txt文件(还有一个空的sql文件)

不要双引号
/opt/apps/mysql-8.0.20/bin/mysqldump -uroot -p -t -T /mysql8/data/mysql-files test1 huanma_ceshi --fields-terminated-by=','

要双引号
/opt/apps/mysql-8.0.20/bin/mysqldump -uroot -p -t -T /mysql8/data/mysql-files test1 huanma_ceshi --fields-terminated-by=',' --fields-enclosed-by='\"'
  • --fields-terminated-by:列分隔符
  • --fields-enclosed-by:字段闭合标签(字段值用什么括起来,比如用单引号)

使用txt文档(不要双引号)

/opt/apps/mysql-8.0.20/bin/mysqldump -uroot -p -t -T /mysql8/data/mysql-files test1 huanma_ceshi --fields-terminated-by=','

默认保存文件名为:huanma_ceshi.txt (同时有一个空白的huanma_ceshi.sql文件)

doris操作:

curl -i -v --location-trusted -u admin:admin_doris_z5SiZZ2UDd -T /mysql8/data/mysql-files/huanma_ceshi.csv -H "column_separator:," -H "label:load_local_file_test5" http://172.31.128.5:8030/api/demo/huanma_ceshi/_stream_load

使用csv文件(不要双引号)

需要登录到mysql中执行

SELECT * FROM huanma_ceshi INTO OUTFILE '/mysql8/data/mysql-files/huanma_ceshi.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\n';
  • FIELDS TERMINATED BY:列分隔符
  • LINES TERMINATED BY:换行符
  • OPTIONALLY ENCLOSED BY:字段闭合标签(字段值用什么括起来,比如用单引号)

doris操作:

curl -i -v --location-trusted -u admin:admin_doris_z5SiZZ2UDd -T /mysql8/data/mysql-files/huanma_ceshi.txt -H "column_separator:," -H "label:load_local_file_test6" http://172.31.128.5:8030/api/demo/huanma_ceshi/_stream_load

curl的一些可配置的参数:

  • label: 导入任务的标签,相同标签的数据无法多次导入。(标签默认保留30分钟)
  • column_separator:用于指定导入文件中的列分隔符,默认为\t。
  • line_delimiter:用于指定导入文件中的换行符,默认为\n。
  • columns:用于指定文件中的列和table中列的对应关系,默认一一对应
  • where: 用来过滤导入文件中的数据
  • max_filter_ratio:最大容忍可过滤(数据不规范等原因)的数据比例。默认零容忍。数据不规范不包括通过 where 条件过滤掉的行。
  • partitions: 用于指定这次导入所设计的partition。如果用户能够确定数据对应的partition,推荐指定该项。不满足这些分区的数据将被过滤掉。
  • timeout: 指定导入的超时时间。单位秒。默认是 600 秒。可设置范围为 1 秒 ~ 259200 秒。
  • timezone: 指定本次导入所使用的时区。默认为东八区。该参数会影响所有导入涉及的和时区有关的函数结果。
  • exec_mem_limit: 导入内存限制。默认为 2GB。单位为字节。
  • format: 指定导入数据格式,默认是csv,支持json格式。
  • read_json_by_line: 布尔类型,为true表示支持每行读取一个json对象,默认值为false。
  • merge_type: 数据的合并类型,一共支持三种类型APPEND、DELETE、MERGE 其中,APPEND是默认值,表示这批数据全部需要追加到现有数据中,DELETE 表示删除与这批数据key相同的所有行,MERGE 语义 需要与delete 条件联合使用,表示满足delete 条件的数据按照DELETE 语义处理其余的按照APPEND 语义处理, 示例:-H "merge_type: MERGE" -H "delete: flag=1"
  • delete: 仅在 MERGE下有意义, 表示数据的删除条件 function_column.sequence_col: 只适用于UNIQUE_KEYS,相同key列下,保证value列按照source_sequence列进行REPLACE, source_sequence可以是数据源中的列,也可以是表结构中的一列。
posted @ 2023-06-14 15:03  哈喽哈喽111111  阅读(380)  评论(0编辑  收藏  举报