在Cassandra中导入和导出架构

40
如何从Cassandra或Cassandra cqlsh提示符导入和导出模式?
5个回答

69

导出keyspace模式:

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'

1
谢谢,完美运行!(我不得不在cqlsh之后包含IP/主机名,因为我们的实例在配置中使用rpc_address)。 - Jess
我正在尝试导出名为crmdata的模式及其数据,请问我需要在哪里运行此cmd命令“cqlsh -e“ crmdata”> db_schema.cql”? - ZAJ

14

一切都可以直接从命令行操作,无需进入cqlsh。

导入schema(.cql文件):

$ cqlsh -e "SOURCE '/path/to/schema.cql'"

导出 keyspace:

$ cqlsh -e "DESCRIBE KEYSPACE somekeyspace" > /path/to/somekeyspace.cql

导出数据库模式:

$ cqlsh -e "DESCRIBE SCHEMA" > /path/to/schema.cql

12
如果使用cassandra-cli,你可以使用“show schema;”命令来转储整个模式。你可以通过先运行“use keyspace;”来限制到特定的键空间。 你可以将输出保存在文件中,然后使用“cassandra-cli -f filename”导入。
如果使用cqlsh,你可以使用“describe schema”命令。你可以通过“describe keyspace keyspace”来限制到一个键空间。 你可以将其保存到文件中,然后使用“cqlsh -f filename”导入。

你好Richard,感谢您的回复。您已经指定了在两个服务中导入keyspace。但是,我需要知道如何在cassandra-cli和cqlsh上导入和导出keyspace的方法。请提供带有语法的信息。 - vpggopal
@vpggopal 我想你可能需要为此付费。 - Lyuben Todorov
如果您使用cassandra-cli创建模式,则使用我上面编写的cassandra-cli命令。如果您使用了cqlsh,则使用cqlsh命令。不要同时使用两者,并注意cassandra-cli不会在其输出中包含cql3表。 - Richard
谢谢Richard,如何使用命令在cqlsh中导出模式? - vpggopal
2
@vpggopal :你可以轻松地使用“echo -e“ describe keyspace <keyspace>;\n” | cqlsh > <keyspace>.shema”将架构获取到文件中。 - Pierre Rust
显示剩余5条评论

12
对于未来的某些人,只需在“CassandraHost”服务器中获取包含“myschema”的模式/键空间的ddl。
echo -e "use myschema;\nDESCRIBE KEYSPACE;\n" | cqlsh  CassandraHost > mySchema.cdl

你可以使用以下方式仅导入DDL(不包括数据):

cqlsh  CassandraNEWhost -f mySchema.cdl

仅当远程主机与兼容版本时,此功能才能正常工作。 - Chris Stryczynski

0

带有身份验证

cqlsh -u <user-name> -e "DESC KEYSPACE user" > user_schema.cql

将提示输入密码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接