2013-05-08 302 views

回答

12

如果使用cassandra-cli,则可以使用'show schema;'命令转储整个模式。您可以通过运行'use keyspace'来限制到特定的密钥空间;'第一。

您可以将输出存储在文件中,然后使用'cassandra-cli -f 文件名'导入。

如果使用cqlsh,则可以使用'describe schema'命令。您可以使用'describe keyspace keyspace'来限制到一个密钥空间。

您可以将其保存到文件中,然后使用'cqlsh -f 文件名'导入。

+0

你好理查德, 感谢您的回复。您已指定在两种服务中导入密钥空间。但是,我需要同时服务于如何在cassandra-cli和cqlsh?上导入和导出keyspace。 请提供信息的语法。 – vpggopal 2013-05-09 06:48:01

+0

@vpggopal我想你可能必须为此付钱。 – 2013-05-09 08:22:33

+0

如果您使用cassandra-cli来创建您的模式,请使用我上面编写的cassandra-cli命令。如果你使用cqlsh,那么使用cqlsh命令。不要同时使用它们,并注意cassandra-cli在其输出中不包含cql3表。 – Richard 2013-05-09 08:25:44

10

对于未来的人来说,只需在“CassandraHost”服务器中用“myschema”的ddl获取模式/密钥空间即可。

echo -e "use myschema;\nDESCRIBE KEYSPACE;\n" | cqlsh CassandraHost > mySchema.cdl 

,你可以用下面只导入DDL(无数据):

cqlsh CassandraNEWhost -f mySchema.cdl 
+0

这只适用于远程主机,如果它们在兼容版本上。 – 2016-05-13 10:32:38

44

导出密钥空间架构:

cqlsh -e "DESC KEYSPACE user" > user_schema.cql 

要导出整个数据库模式:

cqlsh -e "DESC SCHEMA" > db_schema.cql 

要导入schem 'user_schema.cql'('db_schema.cql')位置处的开放式终端(或者您可以指定完整路径)并打开cqlsh shell。然后使用下面的命令导入密钥空间架构:

source 'user_schema.cql' 

要导入完整的数据库模式:在命令行中直

source 'db_schema.cql' 
+1

谢谢,作品完美! (我必须在cqlsh之后包含IP /主机名,因为我们的实例在配置中使用了rpc_address)。 – Jess 2016-02-12 16:01:56

+0

我正在尝试导出名为crmdata的模式及其数据,请问我可以在哪里运行此cmd?cqlsh -e“crmdata”> db_schema.cql' – ZAJ 2017-07-30 05:16:16

5

一切。不需要进入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