您可以通过MySQL客户端、MySQL命令行工具连接DLA,或者直接在DMS for Data Lake Analytics中执行INSERT SELECT语句将OSS中的数据写入AnalyticDB for MySQL。
注意事项
INSERT FROM SELECT通常为长时运行任务,建议通过异步执行方式。
使用MySQL命令行时,需要在命令行中指定
-c
参数,用来识别MySQL语句前的Hint。mysql -hxxx -Pxxx -uxxx -pxxx db_name -c
h:DLA的连接串信息,通过DLA控制台获取。
P:DLA的连接端口,通过DLA控制台获取。
u:DLA用户名,详情,请参见账号和权限。
db_name:DLA中的Schema名。
如果在INSERT INTO子句和SELECT子句中没有指定列信息,请确保源表和目标表的列定义顺序一致,列类型对应匹配。
如果在INSERT INTO子句和SELECT子句中指定列的信息,请确保两者中的列的顺序符合业务需要,列类型对应匹配。
写入数据
异步执行以下SQL将OSS table目录下dla_table_1文件中的数据写入AnalyticDB for MySQL adb_demo数据库的shipping表。
-- 执行OSS到AnalyticDB for MySQL的全量数据写入。
/*+run-async=true*/
INSERT INTO ads_database_schema.shipping
SELECT * FROM oss_data_schema.dla_table_1;
异步执行以下SQL将OSS中table目录下dla_table_1文件中order_amount > 2
的数据写入AnalyticDB for MySQL adb_demo数据库中的order_table表。
-- 执行OSS到AnalyticDB for MySQL的数据写入,包含对OSS数据的筛选逻辑。
/*+run-async=true*/
INSERT INTO ads_database_schema.order_table1 (customer1_id, order1_id, order1_time, order1_amount,order1_type,address1,city1,order1_season)
SELECT customer_id, order_id, order_time, order_amount,order_type,address,city,order_season
FROM oss_data_schema.dla_table_2
WHERE order_amount > 2
LIMIT 10000;
查询写入结果
异步执行INSERT INTO SELECT语句将返回一个task id,在AnalyticDB for MySQL中通过task id轮询任务执行情况,如果status为SUCCESS,则任务完成。
SHOW query_task WHERE id = 'q201812241524sh385b7d4c0049869';
后续操作
将OSS数据迁移至AnalyticDB for MySQL后,您就可以使用AnalyticDB for MySQL提供的各项功能进行数据分析计算。