0

我需要上传到数据库的示例 CSV 文件有超过 10000 条记录。我正在通过 Java 方法调用执行 sql loader 命令:

process = Runtime.getRuntime().exec(sqlLdrCmd);

这会上传 4924 条记录,然后执行只是挂起等待 CSV 上传。

只是想强调这只是我正在使用的一个示例 CSV,我的实际 csv 将包含接近一百万条记录。

我的 ctl 文件看起来像这样:

OPTIONS (SKIP=1)
LOAD
  DATA 
  INFILE 'samples.csv'

  BADFILE 'samples.bad'
  DISCARDFILE 'samples.dsc'
  APPEND INTO TABLE TAB_SAMPLE
    EVALUATE CHECK_CONSTRAINTS
    REENABLE DISABLED_CONSTRAINTS
    EXCEPTIONS EXCEPTION_TABLE
  FIELDS TERMINATED BY "," 
  OPTIONALLY ENCLOSED BY '"'
  TRAILING NULLCOLS
  ( 
    SOURCE_NAME,
ASSOC1_NAME,
ASSOC2_NAME,
ASSOC3_NAME,
ENTITY_NAME,
ATTRIBUTE_GROUP,
ATTRIBUTE_NAME,
TYPE,
STRING_VALUE,
INTEGER_VALUE,
LONG_VALUE,
FLOAT_VALUE,
DOUBLE_VALUE,
BOOLEAN_VALUE,
TIMESTAMP_VALUE,
TIME_POINT_VALUE
)

当我直接从提示符执行时,该命令运行得很好并上传了整个数据。

此表没有外键约束

请提出出路,如果有什么不清楚的地方请告诉我

4

1 回答 1

0

我认为你应该拆分这个过程。我不知道您使用的是哪个数据库,但 SQL Server 有 8k 的限制。

于 2017-09-06T11:53:18.453 回答