Database 在具有JSONB列的表上,使用cassandra loader/cassandra unloader for YugaByte DB导出/导入数据的正确方法是什么
我尝试使用这里描述的步骤Database 在具有JSONB列的表上,使用cassandra loader/cassandra unloader for YugaByte DB导出/导入数据的正确方法是什么,database,distributed-database,yugabyte-db,Database,Distributed Database,Yugabyte Db,我尝试使用这里描述的步骤 wgethttps://github.com/YugaByte/cassandra-loader/releases/download/v0.0.27-yb-2/cassandra-loader wgethttps://github.com/YugaByte/cassandra-loader/releases/download/v0.0.27-yb-2/cassandra-unloader chmod a+x卡桑德拉卸船机 chmod a+x卡桑德拉装载机 由于以上工具都
wgethttps://github.com/YugaByte/cassandra-loader/releases/download/v0.0.27-yb-2/cassandra-loader
wgethttps://github.com/YugaByte/cassandra-loader/releases/download/v0.0.27-yb-2/cassandra-unloader
chmod a+x卡桑德拉卸船机
chmod a+x卡桑德拉装载机
由于以上工具都是基于JVM的,所以安装了OpenJDKsudo-yum安装java-1.8.0-openjdk
然后使用以下命令导出行:
%cd/home/yugabyte/entity
%./cassandra卸载程序-模式“my_ksp.my_表(id、类型、详细信息)”-主机-f export.csv-numThreads 3
检索到的行总数:10000
这里的details
是一个JSONB列。接下来,我在同一集群中创建一个新表my_table\u new
,并尝试将此数据加载到
/cassandra loader-schema“my_ksp.my_table_new(id,type,details)”-host-f/home/yugabyte/entity-numThreads 3-progressRate 200000-numFutures 256-rate 5000-queryTimeout 65
但是得到表单的错误:行的字段数(12)不同于预期的字段数(3)
它看起来像是CSV文件中的默认分隔符“,”导致了问题,因为CSV文件中的JSONB数据也有逗号
作为替代方法,尝试将
-delim“\t”
传递给cassandra卸载程序——但这似乎插入了两个字符“\”和“t”,而不是单个制表符。这是预期的吗?对于cassandra卸载程序/cassandra加载程序,默认分隔符(“,”)在Yugabyte DB中存在YQL JSONB列时不起作用,这是正确的
关于:
>
使用tab作为分隔符应该可以正常工作。但是unix shell需要一些转义才能正确地将“\t”传递给程序。请参阅:
使用:
-delim$'\t'
而不是
-delim“\t”
例如,对于导出,请尝试:
/cassandra卸载程序-schema“my_ksp.my_表(id、类型、详细信息)”-host-f export.csv-numThreads 3-delim$'\t'
对于导入,请尝试:
/cassandra loader-schema“my_ksp.my_table_new(id,type,details)”-host-f/home/yugabyte/entity-numThreads 3-progressRate 200000-numFutures 256-rate 5000-queryTimeout 65-delim$'\t'