2017-04-20 5 views
0

現在、Cassandra-Rubyドライバを使用して、JSONファイルのデータをデータベースの既存のテーブルに挿入しています。Cassandraテーブルにjsonファイルを挿入する

JSONファイルには、次のようになります。

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

私はこのようなファイルで読んでいます:アレイを介し

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

反復処理し、各ハッシュ を取得し、テーブル上に各ハッシュを挿入します

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 

このコードを実行すると、このエラーメッセージが表示されます

in `assert_instance_of': options must be a Hash 

テーブルに挿入されている各オブジェクトがハッシュであることを確認したので、なぜこの問題が発生するのかわかりません。

答えて

1

JSONを挿入していますが、そうではありません。オブジェクトを挿入しようとしています。ドキュメントからこの例を参照してください:

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

このような場合は、json形式を指定する必要があります。

+0

'.to_json'メソッドを使用して各オブジェクトをJSONに変換しても、私はまだ同じエラーが発生しています – danynl

+0

' keyspace.table'は正しいキースペース名とテーブル名ですか? – NiVeR

+0

はい、私はそれらから問い合わせることができるので、すべて正しいです。 – danynl

関連する問題