2017-04-20 2 views
0

Ich verwende derzeit den Cassandra-Ruby-Treiber, um Daten aus einer JSON-Datei in eine vorhandene Tabelle in meiner Datenbank einzufügen.Einfügen von JSON-Datei in Cassandra-Tabelle

die JSON-Datei sieht wie folgt aus:

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

ich in der Datei wie folgt lese:

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

Iterate durch das Array und bekommen jede Hash- und jede Hash auf den Tisch legen

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 

Nach Ausführen dieses Codes bekomme ich diese Fehlermeldung

Ich habe überprüft, dass jedes Objekt, das in die Tabelle eingefügt wird, ein Hash ist, also bin ich nicht sicher, warum ich dieses Problem bekomme.

Antwort

1

Sie sagen, dass Sie eine JSON einfügen, aber Sie sind nicht, Sie versuchen, ein Objekt einzufügen. Siehe dieses Beispiel aus der Dokumentation:

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

Sie müssen es ein JSON-Format geben, wenn Sie es so machen.

+0

selbst wenn ich jedes Objekt in JSON mit '.to_json' Methode konvertieren, bekomme ich immer noch den gleichen Fehler – danynl

+0

Sind' keyplace.table' der richtige Schlüsselraumname und Tabellenname? – NiVeR

+0

ja, alles ist korrekt, da ich von ihnen abfragen kann. – danynl