在 cassandra 中导入和导出模式
Posted
技术标签:
【中文标题】在 cassandra 中导入和导出模式【英文标题】:Import and export schema in cassandra 【发布时间】:2013-05-02 16:18:18 【问题描述】:如何从 Cassandra 或 Cassandra cqlsh 提示导入和导出架构?
【问题讨论】:
【参考方案1】:如果使用 cassandra-cli,您可以使用“show schema;”命令转储整个架构。您可以通过运行'use keyspace;'来限制特定的键空间首先。
您可以将输出存储在文件中,然后使用 'cassandra-cli -f filename' 导入。
如果使用 cqlsh,您可以使用“描述架构”命令。您可以使用 'describe keyspace keyspace' 限制键空间。
您可以将其保存到文件中,然后使用 'cqlsh -f filename' 导入。
【讨论】:
嗨,理查德,感谢您的回复。您已在两个服务中指定导入密钥空间。但是,我需要为如何在 cassandra-cli 和 cqlsh 上导入和导出密钥空间提供服务?请提供带有语法的信息。 @vpggopal 我想你可能需要为此付钱给他。 如果您使用 cassandra-cli 创建架构,请使用我在上面编写的 cassandra-cli 命令。如果您使用 cqlsh,则使用 cqlsh 命令。不要同时使用两者,并注意 cassandra-cli 不会在其输出中包含 cql3 表。 谢谢你 Richard,如何使用命令在 cqlsh 中导出模式? @vpggopal :您可以使用echo -e "describe keyspace <keyspace>;\n" | cqlsh > <keyspace>.shema
轻松获取文件中的架构【参考方案2】:
对于未来的人来说,只是为了在“CassandraHost”服务器中使用“myschema”获取模式/键空间的 ddl。
echo -e "use myschema;\nDESCRIBE KEYSPACE;\n" | cqlsh CassandraHost > mySchema.cdl
您可以使用以下方法仅导入 DDL(无数据):
cqlsh CassandraNEWhost -f mySchema.cdl
【讨论】:
这仅适用于兼容版本的远程主机。【参考方案3】:导出键空间架构:
cqlsh -e "DESC KEYSPACE user" > user_schema.cql
导出整个数据库架构:
cqlsh -e "DESC SCHEMA" > db_schema.cql
在 'user_schema.cql' ('db_schema.cql') 位置导入模式打开终端(或者您可以指定完整路径)并打开 cqlsh shell。然后使用以下命令导入键空间架构:
source 'user_schema.cql'
导入完整的数据库架构:
source 'db_schema.cql'
【讨论】:
谢谢,完美! (我必须在 cqlsh 之后包含 IP/主机名,因为我们的实例在配置中使用了 rpc_address)。 我正在尝试导出我的名为 crmdata 的架构及其数据,你能告诉我我需要在哪里运行这个 cmdcqlsh -e "crmdata" > db_schema.cql
【参考方案4】:
一切都直接来自命令行。无需进入cqlsh。
导入架构(.cql 文件):
$ cqlsh -e "SOURCE '/path/to/schema.cql'"
导出键空间:
$ cqlsh -e "DESCRIBE KEYSPACE somekeyspace" > /path/to/somekeyspace.cql
导出数据库架构:
$ cqlsh -e "DESCRIBE SCHEMA" > /path/to/schema.cql
【讨论】:
【参考方案5】:有认证
cqlsh -u <user-name> -e "DESC KEYSPACE user" > user_schema.cql
密码将被提示。
【讨论】:
以上是关于在 cassandra 中导入和导出模式的主要内容,如果未能解决你的问题,请参考以下文章