如何将 100 万行乘以 150 列从 Matlab 矩阵插入到 SQL 表中。 Matlab 的 Fastinsert 似乎不足以解决这个问题,因为它需要很长时间。我们目前正在使用 SQL 服务器数据库。
我们当前的流程是将矩阵写入 CSV/.txt,然后通过 SSIS/dts 包将此 csv 加载到表中。现在我们希望削减这个过程并直接写入 SQL 表。
看起来最快的方法就是实际构造一个大的插入语句。
example given这里声称这可以导致 100 倍的加速。
%% Upload using an INSERT statement
% clear the table
exec(db,deleteQuery);
% transpose the data
allData2 = allData';
% format the input values
values = sprintf('(%f,%u,''%s''),\n',allData2{:});
% change NaNs to NULLs
values = regexprep(values,'NaN','null');
% construct the SQL INSERT statement
insertQuery = sprintf('insert into %s (%s,%s,%s) values ',tableName,fields{:});
insertQuery = [insertQuery , values(1:end-2),';'];
tic
exec(db,insertQuery);
toc
考虑到数据的大小,您可能希望将其分成更小的部分,但仍然可以获得比目前更快的速度。
我是一名优秀的程序员,十分优秀!