0

大きな xlsx (100 万行近く) ファイルを Cassandra データベースに挿入する必要がありますが、メモリの制限により、その方法について疑問があります。

私はバッチ挿入を使用していますが、メモリへの影響が大きいため、ほぼ不可能であることが証明されています。

$batch = new Cassandra\BatchStatement(Cassandra::BATCH_UNLOGGED);

    foreach ($workbook->createRowIterator($myWorksheetIndex) as $rowIndex => $values) {

        if ($count > 0) {

            $time = is_int($values[3]) ? $values[2]->format('d-m-Y') . ' ' . date('00:00:00') : $values[2]->format('d-m-Y') . ' ' . $values[3]->format('H:i:s');
            $date = date_convert(DateTime::createFromFormat('d-m-Y H:i:s', $time));


            $prepared = $session->prepare(
                "INSERT INTO teste (ptd_assoc,ref_equip,dates) " .
                "VALUES (?, ?, ?)"
            );

            $batch->add($prepared, array(
                'ptd_assoc' => $values[0],
                'ref_equip' => $values[1],
                'dates' => new Cassandra\Timestamp(strtotime($date)),
                //  'load' => 3.4454
            ));
        }

        $count++;
    }

    $session->execute($batch);

xlsx をより読みやすい csv ファイルに変換することに成功しました。メソッドCopyを使用してデータベースにアクセスすることは可能ですか?Cassandra\SimpleStatement

4

1 に答える 1

0

データが整形式の CSV である場合、カスタム インポーターを作成する必要がない場合があります。cqlsh COPY FROMコマンド ( )を見てくださいhelp copy;

于 2016-10-27T14:00:19.230 に答える