1

SqlServer データベースに単純なテーブルがありますsimSQLTable。列見出しは次のとおりです。

index, del_date, name

私は MATLABmytblに 1 つの行を持つテーブルを持っています:

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.

これを解決するには?

4

2 に答える 2

1

ここでの主な問題は、列名がMATLAB tableではなく、データベースmycolnamesテーブルに関連していることだと思います。によって指定された独自の変数名があり、データベースの列名と一致しません。引数ドキュメントから: mytbl{'num' 'deldate' 'myname'}fastinsertdata

挿入するデータ。数値行列、cell 配列、table、データセット配列、または既存のデータベース table に挿入するすべてのデータを含む構造体として指定しますtablename。が構造体の場合data、構造体のフィールド名は一致する必要がありcolnamesます。がテーブルまたはデータセット配列の場合data、テーブルまたはデータセット配列の変数名は と一致する必要がありcolnamesます。

これを回避するには、データベースの列名と一致するようにテーブルの変数名を変更します。

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

または、挿入する必要があるテーブルからデータを抽出することもできます。

fastinsert(conn, 'simSQLTable', mycolnames, mytbl.Variables);
于 2017-09-18T20:22:09.160 に答える