2017-04-20 6 views
0

J'utilise actuellement le pilote Cassandra-Ruby pour insérer des données d'un fichier JSON dans une table existante de ma base de données.Insérer un fichier json dans la table Cassandra

le fichier JSON ressemble à ceci:

[ 
    { 
    "id": "123", 
    "destination": "234", 
    "type": "equipment", 
    "support": "type 1", 
    "test": "test1" 
    }, 
    { 
    "id": "234", 
    "destination": "123", 
    "type": "equipment", 
    "support": "type 1", 
    "test": "test1" 
    } 
] 

Je lis dans le dossier comme celui-ci:

file = File.read('itemType.json') 
data_hash = JSON.parse(file) #return an array of hashes 

Itérer à travers le réseau et obtenir chaque hachage et insérer chaque hachage sur la table

data_hash.each do |has| 
    #check the type of each object 
    #puts has.class #return hash 
    insert_statement = session.prepare('INSERT INTO keyspace.table JSON ?') 
    session.execute(insert_statement, [has]) #error occurs here 
end 

Après l'exécution de ce code, je reçois ce message d'erreurJ'ai vérifié que chaque objet étant inséré dans la table est un hachage, donc je ne suis pas sûr pourquoi je reçois ce problème.

Répondre

1

Vous dites que vous insérez un JSON mais vous ne l'êtes pas, vous essayez d'insérer un objet. Voir cet exemple de la documentation:

INSERT INTO cycling.cyclist_category JSON '{ 
    "category" : "Sprint", 
    "points" : 700, 
    "id" : "829aa84a-4bba-411f-a4fb-38167a987cda" 
}'; 

Vous devez lui donner un format json si vous le faites comme ça.

+0

même si je convertis chaque objet en JSON en utilisant la méthode '.to_json', je reçois toujours la même erreur – danynl

+0

Est-ce que' keyspace.table' est le bon nom d'espace-clé et le bon nom de table? – NiVeR

+0

oui, tout est correct puisque je peux interroger d'eux. – danynl