Как начать вставку строки после определенного числа в базу данных MySql с помощью Pentaho? - PullRequest
0 голосов
/ 02 мая 2018

В основном, что я хочу сделать, это,

У меня есть CSV-файл, содержащий 10000 строк, которые я хочу вставить в базу данных. Когда я начинаю свое преобразование, я хочу начать вставку в базу данных после 4500 строк. Поэтому я хочу узнать количество строк, которые я указал.

Как мне этого добиться? Любая помощь будет великолепна.

Изображение Описание: я просто создаю преобразование, которое читает данные из CSV и записывает в базу данных. Я не знаю, какой шаг поможет мне достичь этого.

Примечание: я приложил свое простое преобразование I simply create a transformation that read data from csv and write to database . I do not know which step will help me to achieve this .

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Я использовал следующий файл чайника, который решил мою проблему. Спасибо @ WorkingHard..and @jxc I used the Add Sequencer and Filter rows to achieve this

0 голосов
/ 03 мая 2018

Я не нашел шага для подсчета обработанных строк, но вы можете использовать шаг " User Defined Java Class " для подсчета номера строки и удаления первых 4500 с кодом, подобным следующему:

// This will be the counter.
Long rowCount;

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
    if (first) {
        rowCount = 0l;
        first=false;
    }

    Object[] r = getRow();
    if (r == null) {
        setOutputDone();
        return false;
    }

    // Increment of the counter.
    rowCount++;

    // Check ouf the counter. Doesn't output the current row if it's less than 4501.
    if (rowCount>4500l) {
        Object[] outputRow = createOutputRow(r, data.outputRowMeta.size());
        // Adds the row count to a stream field.
        get(Fields.Out, "Count").setValue(outputRow, rowCount);
        putRow(data.outputRowMeta, outputRow);
    }

    return true;
}
...