开发者社区> 问答> 正文

分析型数据库如何导入数据



1.5 导入数据


分析型数据库支持多种接入数据的方式:

  • 通过Kettle等ETL工具将本地文件写入分析型数据库。
  • 通过阿里云数据传输从阿里云RDS中实时同步数据变更。(见《用户指南》相关使用阿里云数据传输实时同步RDS的数据章节—仅公共云可用)
  • 建立批量导入表从阿里云MaxCompute(原名ODPS)大批量的导入数据。
  • 通过阿里云数据集成(专有云中通过大数据开发套件的‘数据同步’)任务导入数据。(详见《用户指南》数据的导入章节)
  • 直接将数据通过insert/delete SQL写入实时表。(详见《用户指南》insert章节)

批量导入
批量导入适合每天1-2次且每次同步大量批数据(每次200w条以上)。
特点:小规模数据量的同步速度相对很慢;大批量的数据同步速度相对较快,但是整体任务延迟长。
实时写入
实时写入适合数据写入后比较短时间内(例如1-2分钟)就需要查询的场景。
特点:每次写入的数据相对少(一条到几十条),每秒钟写入一般在千条到万条的数据量。(如果需要非常高的写入速度,例如达到百万条每秒,需要相对大量的ECU资源和优化的写入方法)。
在这里,作为测试使用,我们将介绍如何通过控制台界面进行数据批量导入和实时写入。

通过控制台批量导入数据


我们设定这里通过控制台界面进行MaxCompute(原ODPS)数据导入,AnalyticDB目标表即为前面创建的qsdemo_load_data 表。
前提条件
AnalyticDB目标表qsdemo_load_data创建时更新方式属性为“批量更新”;
操作步骤
步骤1:数据准备。
此处我们需要把MaxCompute的表导入到分析型数据库,因此需要先在MaxCompute中准备好表和数据。
MaxCompute表建表语句:<PRE prettyprinted? linenums>
  1. use projecta;--在MaxCompute的某个project中创建表
  2. CREATE TABLE
  3. demo_load_data (
  4. user_id bigint ,
  5. amt bigint ,
  6. num bigint ,
  7. cat_id bigint ,
  8. thedate bigint
  9. ) ;

本地创建demo_load_data.txt文件,输入数据如下,列分割符为英文逗号,回车换行。<PRE prettyprinted? linenums>
  1. 12345,80,900,1555,20140101
  2. 12346,81,901,1556,20140101
  3. 12347,82,902,1557,20140101
  4. 12348,83,903,1558,20140101
  5. 12349,84,904,1559,20140101
  6. 12350,85,905,1560,20140101
  7. 12351,86,906,1561,20140101
  8. 12352,87,907,1562,20140101
  9. 12353,88,908,1563,20140101
  10. 12354,89,909,1564,20140101
  11. 12355,90,910,1565,20140101
  12. 12356,91,911,1566,20140101
  13. 12357,92,912,1567,20140101
  14. 12358,93,913,1568,20140101
  15. 12359,94,914,1569,20140101
  16. 12360,95,915,1570,20140101
  17. 12361,96,916,1571,20140101
  18. 12362,97,917,1572,20140101
  19. 12363,98,918,1573,20140101
  20. 12364,99,919,1574,20140101

MaxCompute数据上传,若用tunnel上传命令如下:<PRE prettyprinted? linenums>
  1. use projecta;
  2. tunnel upload demo_load_data.txt demo_load_data;--把本地数据文件demo_load_data.txt

步骤2:在操作导入数据之前,需要对数据的来源表进行授权。
此处数据的来源表在MaxCompute上,所以需要在MaxCompute上对云账号授予describe和select权限。
各个专有云授权的云账号名参照专有云的相关配置文档,一般为 test1000000009@aliyun.com
公共云上需要给 garuda_build@aliyun.com以及 garuda_data@aliyun.com账号授权。
授权命令:<PRE prettyprinted? linenums>
  1. USE projecta;--表所属ODPS project
  2. ADD USER ALIYUN$xxxx@aliyun.com;--输入正确的云账号
  3. GRANT Describe,Select ON TABLE table_name TO USER ALIYUN$xxxx@aliyun.com;--输入需要赋权的表和正确的云账号

步骤3:进入DMS for AnalyticDB页面,选择菜单栏上的导入按钮,弹出导入对话框。这里我们的数据源表在阿里云MaxCompute(原ODPS)上。因此数据导入路径按照”odps://project_name/table_name/partition_spec”的格式来填写。目标表选前面创建的表qsdemo_load_data。填写完毕后,如下图所示,点击“确定”按钮。
关于分区信息,在仅有一级Hash分区的情况下DMS会自动识别并填写。
步骤4:接下来页面会显示导入状态一览,分析型数据库会对导入任务进行调度,根据当前系统繁忙情况和待导入数据的大小和结构不同,二十分钟至数个小时内数据导入会结束。
步骤5:数据导入结束后,可以在左侧栏对表进行右键“SQl操作”查看表的数据。

通过控制台实时写入数据


创建表时表属性“更新方式”选择“实时更新”,则可以在建表后直接在SQL窗口中编写SQL语句实时写入数据。
操作步骤
步骤1:创建表my_first_table,参考前面《使用DMS创建表组和表》章节,表属性“更新方式”选择“实时更新”。
步骤2:进入控制台的SQL窗口,输入命令:<PRE prettyprinted? linenums>
  1. insert into my_first_table (user_id,amt,num,cat_id,thedate) values (12345, 80, 900, 1555, 20140101);

步骤3:执行命令。
步骤4:命令执行成功后,可以在左侧栏对表进行右键“SQl操作”查看表的数据。
注意:
  • 实时更新的表刚刚建立后,会有一分钟左右的准备时间,这时候写入的数据需要在准备完成后才能查询,否则查询会报错。
  • 在准备完成后,实时进行insert/delete数据变更,一般需要等待一分钟后才可查询。
  • 分析型数据库进行实时插入和删除时,不支持事务,并且仅遵循最终一致性的设计,所以分析型数据库并不能作为OLTP系统使用。

其他的数据导入方式请看《用户指南》相关数据导入章节。

展开
收起
nicenelly 2017-10-26 14:54:39 2191 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载