【发布时间】:2016-03-25 09:59:21
【问题描述】:
我正在尝试将使用 MATLAB 创建的大约 8000 万条记录插入到 Vertica 数据库表中。我想知道我们是否可以在 MATLAB 中调用 COPY LOCAL 语句作为使用 exec(conn, sql) 的常规 sql 语句。出于测试目的,我尝试了一个包含大约 400 万条记录的 dat 文件,如下所示:
sqlstmnt = 'COPY schema.table_name (FK_CUSTOMER_ID,FK_RUN_START_DATE_ID,FK_RUN_END_DATE_ID,FK_TRAVEL_ID,FK_ORIGIN_ID,FK_DEST_ID,FK_SEGMENT_ID,SEGMENT_PERCENTAGE,LAST_UPDATED) FROM LOCAL ''/my/file/full/path/test1.dat''';
results = exec(conn,sqlstmnt);
但它在results.Message 中给出了错误,例如:
[Vertica]JDBC 预期结果集,但不是从查询“COPY schema.table_name(FK_CUSTOMER_ID,FK_RUN_START_DATE_ID,FK_RUN_END_DATE_ID,FK_TRAVEL_ID,FK_ORIGIN_ID,FK_DEST_ID,FK_SEGMENT_ID,SEGMENT_PERCENTAGE,LAST_UPDATED) FROM LOCAL '/my/file/full/路径/test1.dat'”。查询未执行。
“.dat”文件中的数据按照COPY LOCAL 中提到的列的顺序排列。
我找不到任何有用的资源来解释这个错误。
我有这个 test1.dat 文件,我可以使用 vsql 中的 COPY 插入它,但是由于我在 MATLAB 中运行我的代码并进行了多次迭代,每次迭代产生大约一百万条记录,我想在每次迭代期间插入它们.任何帮助都会非常棒。
【问题讨论】:
标签: sql matlab bulkinsert vertica