已经使用中的superset更改默认数据源sqlite到mysql

原文链接:https://segmentfault.com/a/1190000018042652

1.提取sqlite db(由于当前使用 docker 需要到宿主)
docker cp CONTAINER_NAME:/var/lib/superset/superset.db /opt

2.数据导出
然后使用 navicat 数据库工具打开sqlite文件选择导出向导csv数据保存到一个文件夹

3.创建mysql数据库与账号

4.安装superset python mysql支持 修改superset 数据库config(这个网上很多配置)

5.然后使用 superset db upgrade 初始化mysql数据表结构(如果直接导入sqlite导出的csv字段默认都是varchar255,这个会有问题)

6.更改数据表,删除全部数据表外键(删除外键是我这边的做法,具体自己可以优化,这里建议暂停superset来操作会快些)

7.更改部分报错类型
Incorrect datetime value: '0000-00-00 00:53:00' for column 'last_login' at row 1
[ERR] INSERT INTO new_superset.ab_user

删除 ab_user.cvs last_login created_on changed_on 数据
同时ab_user表更改last_login,created_on,changed_on 字段类型为timestamp(6)

1406 - Data too long for column 'sql' at row 1
[ERR] INSERT INTO new_superset.query
query表更改sql,'executed_sql' 字段类型longtext

1062 - Duplicate entry '[impala].[dw]' for key 'name'
[ERR] INSERT INTO new_superset.`ab_view_menu
删除唯一索引

dbs.password 如果乱码需要删除,不然打开数据源页面会报错

8.使用navicat导入向导导入csv数据到mysql

原文链接:https://segmentfault.com/a/1190000018042652


s8fh26h3
18 声望1 粉丝