通过INSERT
语句插入数据的最佳做法是什么?
在MonetDB中存在批量数据加载(COPY INTO
)的操作,但它需要文件或流,这个解决方案并不适合我的项目。
我尝试使用START TRANSACTION; ... COMMIT
;但我最好的结果是1分钟内有22万条记录。
我通过ODBC连接在我的.net项目中使用MonetDB。
如何以最快的方式通过INSERT
插入数据?
答案 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);