MonetDB插入批量数据的最佳实践

时间:2015-10-07 14:48:06

标签: .net odbc monetdb

通过INSERT语句插入数据的最佳做法是什么?

在MonetDB中存在批量数据加载(COPY INTO)的操作,但它需要文件或流,这个解决方案并不适合我的项目。

我尝试使用START TRANSACTION; ... COMMIT;但我最好的结果是1分钟内有22万条记录。

我通过ODBC连接在我的.net项目中使用MonetDB。

如何以最快的方式通过INSERT插入数据?

2 个答案:

答案 0 :(得分:0)

每个INSERT可以尝试多个(比方说1000个)值:

START TRANSACTION;
CREATE TABLE foo (a INTEGER, b STRING);
INSERT INTO foo VALUES (1, 'a'), (2, 'b'), (3, 'c');
COMMIT;

但实际上,COPY INTO的批量加载通常是一个更好的主意......

答案 1 :(得分:-1)

https://www.nuget.org/packages/MonetDb.Mapi

int count;
string tableName; // "\"MyTable\""
string columns; // '"' + string.Join("\", \"", columnArray) + '"'

dbCommand.Execute($"COPY {count} RECORDS INTO {tableName} FROM STDIN ({columns}) DELIMITERS ',','\\n','\\'';");

string records; // string.Join('\n', recArrayOfArray.Select(x => string.Join("," x))
dbCommand.Execute(records);