我有代码尝试通过 Teradata .Net 提供程序批量加载数据。我使用 TdDataAdapter 方法如下:
using (TdDataAdapter adapter = new TdDataAdapter())
{
insertCommand.UpdatedRowSource = UpdateRowSource.None;
adapter.InsertCommand = insertCommand;
adapter.UpdateBatchSize = 1000; // Tried numerous values
adapter.Update(dataTable);
}
此实例中的插入命令是根据要输入的数据进行更改的。需要明确的是,代码有效,数据按预期加载,但速度非常慢。我知道我可以使用 FastLoad,但在 .Net 中使用它几乎是不可能的,但我注意到,尽管总体速度非常慢,但添加任何小数或 clob 字段都会使其速度减慢 30 倍左右。实际上令人难以置信的是它减慢了速度。一些数字:
最大的 clob 为 600 个字符,因此它并不是很大,文件本身最大为 404K。我知道我可以对这里的文本使用 VARCAHR,这不是测试的重点。有些东西导致了 Clob 和 Decimals 的巨大减慢,其他人有经历过这种情况吗?这些列定义为:
DecimalColumn DECIMAL(10,4),
ClobColumn CLOB
我尝试过在表上使用或不使用标识列,使用或不使用索引和主键等。有些东西显着减慢了速度。 .Net 命令的参数类型为
TdType.Decimal
和 TdType.Clob
。我再次知道我可以使用不同的数据类型,但这不是代码的重点。我需要支持这些数据类型。
Teradata 或任何人对这里的原因几乎没有做出回应,所以如果您发现这一点,我发现减少此问题的唯一方法是使用临时 Double 和 VARCHAR 列,然后将数据选择到最终表中。不是很大,但速度差异很大。