1

cqlshでコピーを使用して、大きな.csvファイルからCassandraにデータをアップロードしています。Cassandra 1.2 と CQL 3.0 を使用しています。ただし、" はデータの一部であるため、データをアップロードするために他の文字を使用する必要があるため、拡張 ASCII 文字を使用する必要があります。さまざまなアプローチを試みましたが失敗しました。

以下は機能しますが、目的のために拡張ASCII文字を使用する必要があります..

copy (<columnnames>) from <filename> where deleimiter='|' and quote = '"';
copy (<columnnames>) from <filename> where deleimiter='|' and quote = '~';

quote='ß' を指定すると、次のエラーが表示されます。

:"quotechar" は 1 文字の文字列でなければなりません

引用パラメータに拡張ASCII文字を使用する方法についてのアドバイスをお願いします..

前もって感謝します

4

2 に答える 2

0

COPY ドキュメンテーション ページのメモでは、(あなたの場合のように) 一括読み込みの場合、json2sstableユーティリティを使用する必要があることが示唆されています。その後、sstableloader を使用してsstablesをクラスターにロードできます。したがって、CSV を JSON に変換するスクリプト/プログラムを作成し、これらのツールを大きな CSV に使用することをお勧めします。JSON では、ASCII テーブルのすべての文字を問題なく処理できます。

于 2013-07-19T13:54:56.223 に答える
0

同様の問題があり、cqlshのソースコードを調べました(これはpythonスクリプトです)。私の場合、python で csv を生成していたので、適切な python csv パラメーターを見つけることが問題でした。

cqlsh からの重要な情報は次のとおりです。

    csv_dialect_defaults = dict(delimiter=',', doublequote=False,
                            escapechar='\\', quotechar='"')

したがって、幸運にも Python から .csv ファイルを生成できる場合は、次のように csv モジュールを使用するだけです。

    writer = csv.writer(open("output.csv", 'w'), **csv_dialect_defaults)

Pythonを使用していない場合でも、これが役立つことを願っています.

于 2014-09-12T11:43:04.727 に答える