sql server语言 - MATLAB快速插入错误



我在SqlServer数据库中有一个简单的表,simSQLTable。列标题为:

index, del_date, name

我在MATLAB mytbl中有一个表,其中一行:

num   deldate  myname
---   -------  ------
1     '07-02-2015 00:00:00.0'  'JenZ'
mycolnames = {'index', 'del_date', 'name'};

我这样使用fastinsert:

fastinsert(conn, 'simSQLTable', mycolnames, mytbl);

但是我得到这个错误:

Error using database/fastinsert (line 90)
Variable fields and insert fields do not match.

如何解决这个问题?

我认为这里的主要问题是mycolnames中的列名属于数据库表,而不是您的MATLAB表mytbl。它有自己的变量名,由{'num' 'deldate' 'myname'}给出,与数据库列名不匹配。data参数的fastinsert文档:

要插入的数据,指定为数字矩阵、单元格数组、表、数据集数组或包含要插入到现有数据库表tablename中的所有数据的结构。如果data是一个结构,那么结构中的字段名必须匹配colnames。如果data是表或数据集数组,则表或数据集数组中的变量名必须与colnames匹配。

要解决这个问题,您可以修改表中的变量名,使其与数据库列名相匹配:

mytbl.Properties.VariableNames = mycolnames;
fastinsert(conn, 'simSQLTable', mycolnames, mytbl);

或者您可以直接从表中提取需要插入的数据:

fastinsert(conn, 'simSQLTable', mycolnames, mytbl.Variables);

fastinsert查询数据库以获取列的数据类型。这会导致保留关键字的问题。尝试在mySQL中使用反勾号`或在Transact-SQL中使用反勾号"来引用关键字index

mySQL:

mycolnames = {'`index`', 'del_date', 'name'}

transact - sql:

mycolnames = {'"index"', 'del_date', 'name'}

相关内容

  • 没有找到相关文章

最新更新