如何使用Pentaho开始将一些指定数字后的行插入MySql数据库?

时间:2018-05-02 06:26:25

标签: mysql csv pentaho pentaho-spoon pentaho-data-integration

基本上我想做的是,

我有CSV文件,包含10,000行,我想插入数据库。当我开始转换时,我想在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 :(得分:0)

我还没有找到计算已处理行数的步骤,但您可以使用" 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;
}

答案 1 :(得分:0)

我使用了以下的水壶文件,这解决了我的问题。 感谢@ WorkingHard..and @jxc I used the Add Sequencer and Filter rows to achieve this