Useful CQLSH Commands for Everyday Use

Essential CQLSH Commands for Tech Enthusiasts

The Cassandra Query Language Shell (CQLSH) is an essential tool for database administrators and developers working with Apache Cassandra. This interactive command-line interface provides direct access to your Cassandra cluster, enabling efficient database management and troubleshooting. Understanding the most practical CQLSH commands can significantly improve your daily workflow and productivity.

Getting Started with CQLSH

Before diving into specific commands, ensure you have CQLSH properly configured. Connect to your Cassandra cluster using:

cqlsh [host] [port] -u [username] -p [password]

For SSL connections:

cqlsh [host] [port] --ssl -u [username] -p [password]

Essential Connection and Session Commands

Basic Connection Management

-- Check current connection status
DESCRIBE CLUSTER;

-- View current session information
SHOW VERSION;

-- Exit CQLSH
EXIT;
QUIT;

Keyspace Operations

-- List all keyspaces
DESCRIBE KEYSPACES;

-- Use a specific keyspace
USE keyspace_name;

-- Create a new keyspace
CREATE KEYSPACE my_keyspace 
WITH REPLICATION = {
    'class': 'SimpleStrategy',
    'replication_factor': 3
};

-- Drop a keyspace
DROP KEYSPACE IF EXISTS keyspace_name;

Table Management Commands

Viewing Table Information

-- List all tables in current keyspace
DESCRIBE TABLES;

-- Show table structure
DESCRIBE TABLE table_name;

-- View table schema with detailed information
DESCRIBE FULL SCHEMA;

Table Creation and Modification

-- Create a table
CREATE TABLE users (
    user_id UUID PRIMARY KEY,
    username TEXT,
    email TEXT,
    created_at TIMESTAMP
);

-- Add a column
ALTER TABLE users ADD phone TEXT;

-- Drop a column
ALTER TABLE users DROP phone;

-- Drop a table
DROP TABLE IF EXISTS table_name;

Data Manipulation Commands

Querying Data

-- Basic SELECT
SELECT * FROM users;

-- SELECT with conditions
SELECT username, email FROM users 
WHERE user_id = 123e4567-e89b-12d3-a456-426614174000;

-- SELECT with LIMIT
SELECT * FROM users LIMIT 10;

-- SELECT with ALLOW FILTERING (use cautiously)
SELECT * FROM users WHERE email = 'user@example.com' ALLOW FILTERING;

Inserting and Updating Data

-- Insert data
INSERT INTO users (user_id, username, email, created_at)
VALUES (uuid(), 'john_doe', 'john@example.com', toTimestamp(now()));

-- Update data
UPDATE users SET email = 'newemail@example.com' 
WHERE user_id = 123e4567-e89b-12d3-a456-426614174000;

-- Delete data
DELETE FROM users WHERE user_id = 123e4567-e89b-12d3-a456-426614174000;

Monitoring and Performance Commands

Cluster Health and Statistics

-- View cluster information
DESCRIBE CLUSTER;

-- Check consistency levels
CONSISTENCY;

-- Set consistency level
CONSISTENCY QUORUM;

-- View current consistency level
CONSISTENCY;

Tracing and Debugging

-- Enable tracing
TRACING ON;

-- Execute a query with tracing
SELECT * FROM users WHERE user_id = 123e4567-e89b-12d3-a456-426614174000;

-- Disable tracing
TRACING OFF;

Advanced CQLSH Features

Working with Collections

-- Create table with collections
CREATE TABLE user_preferences (
    user_id UUID PRIMARY KEY,
    tags SET<TEXT>,
    settings MAP<TEXT, TEXT>,
    login_history LIST<TIMESTAMP>
);

-- Insert collection data
INSERT INTO user_preferences (user_id, tags, settings)
VALUES (uuid(), {'developer', 'admin'}, {'theme': 'dark', 'language': 'en'});

-- Update collections
UPDATE user_preferences 
SET tags = tags + {'new_tag'} 
WHERE user_id = 123e4567-e89b-12d3-a456-426614174000;

User-Defined Types and Functions

-- Create a user-defined type
CREATE TYPE address (
    street TEXT,
    city TEXT,
    zip_code TEXT
);

-- Use UDT in table
CREATE TABLE customers (
    customer_id UUID PRIMARY KEY,
    name TEXT,
    address FROZEN<address>
);

Batch Operations and Transactions

-- Execute batch operations
BEGIN BATCH
    INSERT INTO users (user_id, username) VALUES (uuid(), 'user1');
    INSERT INTO users (user_id, username) VALUES (uuid(), 'user2');
    UPDATE users SET email = 'updated@example.com' WHERE user_id = existing_id;
APPLY BATCH;

File Operations and Data Import/Export

Importing Data

-- Copy data from CSV file
COPY users (user_id, username, email) FROM 'users.csv' WITH HEADER = true;

Exporting Data

-- Export data to CSV
COPY users TO 'users_backup.csv' WITH HEADER = true;

CQLSH Configuration and Customization

Setting CQLSH Options

-- Expand output for better readability
EXPAND ON;

-- Set paging for large result sets
PAGING ON;

-- Configure page size
PAGING 50;

-- Show execution time
TIMING ON;

Source External Files

-- Execute commands from file
SOURCE 'path/to/script.cql';

Best Practices for Daily CQLSH Usage

  • Always use appropriate consistency levels for your use case
  • Limit result sets to avoid overwhelming output
  • Use DESCRIBE commands frequently to understand schema structure
  • Enable timing to monitor query performance
  • Leverage batch operations for related writes
  • Use tracing to debug slow queries
  • Regular backup important data using COPY commands

Troubleshooting Common Issues

Connection Problems

-- Test connectivity
DESCRIBE CLUSTER;

-- Check current keyspace
DESCRIBE KEYSPACE;

Performance Issues

-- Enable tracing for slow queries
TRACING ON;
SELECT * FROM large_table WHERE partition_key = 'value';

-- Check consistency level impact
CONSISTENCY LOCAL_ONE;
-- Re-run query and compare performance

Conclusion

Mastering these essential CQLSH commands will significantly enhance your productivity when working with Cassandra databases. Regular practice with these commands, combined with understanding Cassandra’s data model principles, will make you more effective in managing and troubleshooting your NoSQL database infrastructure.

Remember to always test commands in a development environment before executing them in production, and maintain regular backups of critical data. The flexibility and power of CQLSH make it an indispensable tool for any Cassandra database professional.


MinervaDB Inc. specializes in database consulting and optimization services. For expert assistance with your Cassandra deployment and performance tuning needs, contact our team of certified database professionals.

Further Reading:

About MinervaDB Corporation 148 Articles
Full-stack Database Infrastructure Architecture, Engineering and Operations Consultative Support(24*7) Provider for PostgreSQL, MySQL, MariaDB, MongoDB, ClickHouse, Trino, SQL Server, Cassandra, CockroachDB, Yugabyte, Couchbase, Redis, Valkey, NoSQL, NewSQL, Databricks, Amazon Resdhift, Amazon Aurora, CloudSQL, Snowflake and AzureSQL with core expertize in Performance, Scalability, High Availability, Database Reliability Engineering, Database Upgrades/Migration, and Data Security.

Be the first to comment

Leave a Reply