Matlab fastinsert for> 1M行x 150个字段

时间:2014-09-16 11:49:52

标签: sql-server matlab

如何将从Matlab矩阵乘以150列的1Million +行插入到SQL表中。 Matlab的Fastinsert似乎不适合这个,因为它需要很长时间。我们目前正在使用SQL服务器数据库。

我们当前的流程是将矩阵写入CSV / .txt,然后通过SSIS / dts包将此csv加载到表中。现在我们正在寻找切断此过程并直接写入SQL表。

1 个答案:

答案 0 :(得分:3)

似乎最快的方法是实际构建一个大的插入语句。

此处的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

考虑到您的数据大小,您可能希望将其切成一小块,但仍然可以获得比现有速度更好的速度。