阅读(4619) (1)

Mycat2 Loaddate 注解导入CSV数据

2021-09-08 10:48:35 更新
/*+ mycat:loaddata{
    "fileName":"xxx/mycat_loaddata_example",
    "delimiter":",",
    "schemaName":"db1",
    "tableName":"travelrecord"
} */;
  • fileName是mycat所在服务器的csv文件路径
  • delimiter是row分隔符,默认为空格
  • schemaName是逻辑库名
  • tableName是逻辑表名

CSV解析使用org.apache.commons.csv实现,上述的delimiter就是org.apache.commons.csv.CSVFormat的参数

可以自行添加更多参数控制解析格式

Mycat2 会把 csv 的row记录转换成insert语句并以1000行一批次依次执行,整体执行与多语句执行没有区别

如果导入的是全局表数据,可能返回的影响行数是物理表的影响行数,而不是逻辑表的

如果要求数据一致性,可以开启事务后再使用该注解,但是事务会影响并行插入的连接数,性能不如不开事务

2021-7-22号后 1.20版本会自动开启事务并自动提交

 /*+ mycat:loaddata{
   "fileName":"xxxxx",
   "schemaName":"db1",
   "tableName":"travelrecord"
} */;

对应csv格式
1  \N \N \N \N \N
2  \N \N \N \N \N
3  \N \N \N \N \N

 /*+ mycat:loaddata{
   "fileName":"xxxx",
   "delimiter":",",
   "schemaName":"db1",
   "tableName":"travelrecord"
} */;

对应csv格式
1,\N,\N,\N,\N,\N
2,\N,\N,\N,\N,\N
3,\N,\N,\N,\N,\N