0

我正在尝试使用 Java 中的 MariaDB ColumnStore Bulk Write SDK 在具有 50 列(数据类型 int)的表中批量插入 10 行,但它从未完成必须在 10 -15 次尝试中终止进程,但结果相同。

这是他们文档中的代码示例 https://mariadb.com/kb/en/library/columnstore-bulk-write-sdk/#rhel-centos-7

import com.mariadb.columnstore.api.*;

public class MCSAPITest {

        public static void main(String[] args) {
        ColumnStoreDriver d = new ColumnStoreDriver();
        ColumnStoreBulkInsert b = d.createBulkInsert("test", "t1", (short)0, 0);
        try {
           int rows = 10;
           int columns = 50;
           for (int i = 0; i < rows; ++i) {
            for (int c = 0; c < columns; ++c) {
                b.setColumn(c, 0);
            }
            System.out.println("Writing row: " + i);
            b.writeRow();
        }
        System.out.println("Commiting Now");
        b.commit();
        }
        catch (ColumnStoreException e) {
            b.rollback();
            e.printStackTrace();
        }
    }
}

尝试将列减少到 20 并且工作正常。有没有人注意到这一点?

4

2 回答 2

0

我已经向开发团队提出了这个问题,这个问题在 1.1.4 版本中得到了修复。更多细节在这里。https://jira.mariadb.org/browse/MCOL-1245

于 2018-03-28T16:54:28.050 回答
0

如果您按照教程创建表格:

create table t1(i int, c char(3)) engine=columnstore;

您只能将数据插入两列。仔细检查表中的列数是否与您插入的列数相匹配是明智的。

无论表中有多少列,插入比表中更多的列都应该引发异常。通常的建议是针对ColumnStore 项目下的 MariaDB Jira上的这种意外行为打开一个错误报告。

在调试器下运行代码可以让您发现代码似乎挂起的位置。这是很有价值的信息,开发人员可以使用它来找出为什么它没有按预期运行。

于 2018-03-07T00:53:17.770 回答