网站建设热门吗,石家庄网站建设教程,企业建设网站方案设计,网络商城网站怎样做关键词优化一、背景
doris本身是支持直接从mysql中同步数据的#xff0c;但有时候#xff0c;客户不允许我们使用doris直连mysql#xff0c;此时就需要客户配合将mysql中的数据手工导出成离线文件#xff0c;我们再导入到doris中
二、环境
doris 1.2
三、方案
doris支持多种导入…一、背景
doris本身是支持直接从mysql中同步数据的但有时候客户不允许我们使用doris直连mysql此时就需要客户配合将mysql中的数据手工导出成离线文件我们再导入到doris中
二、环境
doris 1.2
三、方案
doris支持多种导入离线数据的方案见 doris导入数据方案 但在本文场景下一般会使用到insert into、csv和json三种方案
3.1 insert into方案
doris对于insert into 对于数据量较小的场景比如100行以内可以直接让用户在navicat中将某个表转储SQL文件然后将其中的insert语句copy出来在doris中执行。但如果数据量较多时doris会一行行地去执行效率就会很低。此时如果将多个INSERT INTO中的value部分合并成一行再由doris执行效率就会得到提升但navicat并不原生支持合并因此作罢。 3.1.1 在doris命令行或者mysql 命令行中执行
打开doris控制台将insert粘贴进来执行。
或者使用mysql client登录到doris将insert粘贴进来执行。
或者将insert语句写入到服务器的一个文件中例如test.sql然后在mysql client中执行source命令
3.1.2 在bash中执行
如果没有登录到mysql client中也可以在bash里直接执行
mysql -h {doris_fe_ip} -P {doris_fe_tcp_port一般是9030} -u{doris_username} -p{doris_password} {doris_database} /root/sql/test.sql或者挂在后台执行
nohup mysql -h {doris_fe_ip} -P {doris_fe_tcp_port一般是9030} -u{doris_username} -p{doris_password} {doris_database} /root/sql/test.sql /root/sql/test.log 21 3.2 csv
对于没有什么很复杂的文本的表主要是不会出现跟csv分隔符相同的文本的字段可以使用csv格式。
使用navicat导出向导格式选择csv文本识别符号选择none避免navicat自作聪明地给字段添加日期选YMD格式
使用这种方案导出来的csv文件格式如下第一行是标题剩下的是数据数据分割符是 “”
在doris上建好表之后可以使用curl命令来将csv文件导入到doris
curl --location-trusted -u {dorisusername}:{dorispassword} -H label:{12345} -H timeout:100 -H format:csv_with_names -H column_separator:, -T {test.csv} http://{doris_fe_ip}:{doris_fe_port}/api/{doris_db}/{doris_table}/_stream_load相关命令说明如下 dorisusernamedoris的账号 dorispassworddoris的密码 label本次导入任务的名称多次导入时需要更换名称30分钟内不允许名称重复 timeout导入超时单位s format文件格式默认是csv由于navicat导出的时候第一行不是数据而是标题因此这里需要改成csv_with_names作用是过滤掉第一行的标题 column_separator文件分隔符navicat导出来的csv的分割符是“,” doris_fe_ip doris的fe的ip doris_fe_port doris的fe的port一般为8030 doris_db doris的数据库名 doris_table doris的数据表名 3.3 json推荐
相比于csv方案json最大的好处是不怕文本中出现与分割符相同的内容但坏处是json文件要求每个数据都有个key因此文件会比csv大很多。
使用navicat导出向导格式选择json日期选YMD格式
使用这种方案导出来的json文件格式如下最外层是[]每一行数据都会用一个{}括起来而且多行数据的key的顺序是一样的。 在doris上建好表之后可以使用curl命令来将json文件导入到doris
curl --location-trusted -u {dorisusername}:{dorispassword} -H label:{12345} -H timeout:100 -H format:json -H strip_outer_array:true -T {test.csv} http://{doris_fe_ip}:{doris_fe_port}/api/{doris_db}/{doris_table}/_stream_load相关命令说明如下 dorisusernamedoris的账号 dorispassworddoris的密码 label本次导入任务的名称多次导入时需要更换名称30分钟内不允许名称重复 timeout导入超时单位s format文件格式默认是csv本方案使用json因此这里需要改成json strip_outer_arraydoris导入json时默认最外层是{}但navicat导出来的数据最外层是[]因此需要指定此参数将json数组先展平 doris_fe_ip doris的fe的ip doris_fe_port doris的fe的port一般为8030 doris_db doris的数据库名 doris_table doris的数据表名 注意json格式导入的时候限制单个文件在100MB以内在doris be上有参数可调如果超过100MB需要先将json切成多个小文件。