本文档所描述的内容属于神策分析的高级使用功能,涉及较多技术细节,仅适用于历史数据导出导入,且环境数据总量不超过 10 亿条的客户参考。
如果您需要把数据迁移到其他新环境,或者环境数据总量超过 10 亿条,那么请联系您的客户成功经理或者项目经理购买数据迁移服务。如果对文档内容有疑惑,请咨询神策值班同学获取协助。
概述
神策分析开始为用户提供数据自助数据导入导出功能,即通过 API 导出原始神策分析环境中的历史数据,然后通过导入工具把历史数据导入到新建神策分析环境中。
数据导入导出准备
请检查您环境里事件属性、用户属性是否有神策保留字段,如果包含保留字段,请联系神策值班同学处理。否则会出现保留字段入库失败的情况。保留字段
数据导出
使用 OpenAPI 的自定义 sql 查询 接口通过编写 SQL 的方式,导出 users 表和 events 表中的数据(如果是 1.15.1646 及之后的神策系统版本,且使用了神策的 items 表功能,也需要导出 items 表中的数据)。需要注意的是,SQL 在执行过程中,默认超过 10 分钟 之后会被系统强制杀死,如果希望增大超时时间可以在 SQL 语句之后添加 MAX_QUERY_EXECUTION_TIME 参数控制(时间单位为秒,建议最大超时时长不要超过 1800,以免影响系统正常查询)。
导出用户数据
使用 curl 导出 users 表的例子如下:
curl 'http://{host}:{port}/api/v3/analytics/v1/model/sql/query' \
--header 'api-key: {apiKey}' \
--header 'sensorsdata-project:{projectName}' \
--header 'Content-Type: application/json' \
--data-raw '{
"sql":"SELECT cast(id as string),first_id,second_id FROM users /*MAX_QUERY_EXECUTION_TIME=1800*/",
"limit":"10",
"request_id":"123123123"
}' >> profile.json
导出的数据样例:
{"code":"SUCCESS","request_id":"ea5d8d6c448b45f3bf15560aa9456dc3","data":{"data":["653088","653088","-9221149192968257218"],"columns":["second_id","first_id","cast(id as string)"]}}
{"code":"SUCCESS","request_id":"ea5d8d6c448b45f3bf15560aa9456dc3","data":{"data":["509825","509825","-9220670589977141579"],"columns":["second_id","first_id","cast(id as string)"]}}
{"code":"SUCCESS","request_id":"ea5d8d6c448b45f3bf15560aa9456dc3","data":{"data":["359861","359861","-9220452992068540918"],"columns":["second_id","first_id","cast(id as string)"]}}
导出事件数据
在导出 events 表数据时,建议通过 date 字段按天导出,这样可以提高 SQL 的查询速度。
使用 curl 导出 events 表的例子如下:
curl 'http://{host}:{port}/api/v3/analytics/v1/model/sql/query' \
--header 'api-key: {apiKey}' \
--header 'sensorsdata-project:{projectName}' \
--header 'Content-Type: application/json' \
--data-raw '{
"sql":"SELECT event,time,distinct_id,$lib FROM events where date='2025-9-15' /*MAX_QUERY_EXECUTION_TIME=1800*/",
"limit":"10",
"request_id":"123123123"
}' >> event.json
导出的数据样例:
{"code":"SUCCESS","request_id":"99ae756260284b3986ce8e2204dd4eb2","data":{"data":["Java","718880","2025-09-15 17:15:03.381","issue_create_operation"],"columns":["$lib","distinct_id","time","event"]}}
{"code":"SUCCESS","request_id":"99ae756260284b3986ce8e2204dd4eb2","data":{"data":["Java","718859","2025-09-15 16:23:39.998","issue_create_operation"],"columns":["$lib","distinct_id","time","event"]}}
{"code":"SUCCESS","request_id":"99ae756260284b3986ce8e2204dd4eb2","data":{"data":["Java","718789","2025-09-15 13:51:50.231","issue_create_operation"],"columns":["$lib","distinct_id","time","event"]}}
数据格式清洗
通过上述方法导出的数据,可以使用神策提供的几种导入工具 导入工具 重新导入到神策分析系统。
数据导入
在导入数据的过程中,应遵循以下步骤,否则会导致 TrackSignup 逻辑混乱。
- 先导入 users 表中的数据
- 再导入 events 表中的数据
导入 users 表中的数据
- 对于私有部署版用户,请使用 Integrator Importer 或 LogAgent 进行 users 数据导入;
- 对于云版用户,请使用 FormatImporter 或 LogAgent 进行 users 数据导入;
请不要将文件内容顺序打乱。
导入 events 表中的数据
使用任意一种导入工具导入即可。