Skip to content

Instantly share code, notes, and snippets.

@amussey
Last active December 25, 2015 00:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amussey/6890097 to your computer and use it in GitHub Desktop.
Save amussey/6890097 to your computer and use it in GitHub Desktop.
Cassandra Database Injector Quickly insert a file of CQL3 data into your Cassandra cluster.

CQL Database Injector

To run this, simply run:

python cassandra-cql.py hostname port script_file [-f]

This will soon be packaged for pip.

#! /usr/bin/env python
import python_include as superlib
from sys import argv
if len(argv) < 4 or (len(argv) == 5 and argv[4] != '-f'):
print '''
This file is used to inject a full *.cql file into a Cassandra database.
To run this script, all three command line parameters are required:
python cassandra-cql.py hostname port script_file [-f]
hostname The address of the server you are connecting to
port The port of the cassandra server (usually 9160)
script_file The *.cql file to be executed
-f Force the script to continue if it hits any error
An example script file would be:
USE keyspace;
CREATE COLUMNFAMILY projects (
KEY uuid PRIMARY KEY,
project_id int,
name text
);
'''
else:
superlib.execute_file(argv[1], argv[2], argv[3], force=(len(argv) > 4))
#! /usr/bin/env python
'''
This file is used to inject a full *.cql file into a Cassandra database.
To run this script, all three command line parameters are required:
python cassandra-cql.py hostname port script_file
An example script file would be:
USE keyspace;
CREATE COLUMNFAMILY projects (
KEY uuid PRIMARY KEY,
project_id int,
name text
);
'''
import cql
import sys
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
def disable(self):
self.HEADER = ''
self.OKBLUE = ''
self.OKGREEN = ''
self.WARNING = ''
self.FAIL = ''
self.ENDC = ''
def execute_file(host, port, filename, force):
connection = cql.connect(host=host, port=port, cql_version='3.0.0')
cursor = connection.cursor()
cql_file = open(filename)
cql_command_list = ''.join(cql_file.readlines()).split(";")
for cql_command in cql_command_list:
if cql_command.replace('\n', ''):
print '\n{command}'.format(command=cql_command.strip('\n'))
try:
cursor.execute('{command};'.format(command=cql_command.replace('\n', ' ')))
print '{color_start}Success!{color_end}'.format(color_start=bcolors.OKGREEN, color_end=bcolors.ENDC)
except cql.ProgrammingError as e:
print '{color_start}{error}{color_end}'.format(error=e, color_start=bcolors.FAIL, color_end=bcolors.ENDC)
if not force:
print '\n{color_start}Execution of script {filename} failed!\nSee the error message above for details.{color_end}'.format(color_start=bcolors.FAIL,
color_end=bcolors.ENDC,
filename=filename)
sys.exit(-1)
print '\n{color_start}Execution of script {filename} complete!{color_end}'.format(color_start=bcolors.OKBLUE,
color_end=bcolors.ENDC,
filename=filename)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment