Кассандра — PHP драйвер datastax — импортировать большой набор данных

Мне нужно вставить большой файл xlsx (около 1 миллиона строк) в базу данных 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 метод?

0

Решение

Если данные находятся в хорошо отформатированном CSV, вам, возможно, не придется писать пользовательский импортер. Посмотрите на cqlsh COPY FROM команда (help copy;).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]