1

c#-Visual 2008-を使用してコードを作成しました。

1-エクセルシート。

2- Excel への接続を開きます

3- OleDbDataReader オブジェクトと GetTableSchema メソッドを使用して列名を読み取ります

4-列名を配列に追加しました

5-EXcelシートと同じ列名を持つテーブルを作成しました(CREATEテーブル
コマンドを使用しました)

6-次に、SQL でテーブルを作成したら、Excel の行をループし、Insert コマンドを使用してデータを SQL に追加します。

今私の問題は:

「テーブルの作成」コマンドでは、列のDATATYPEを指定する必要があります!ie

CREATE TABLE "table_name"
("column 1" "data_type_for_column_1",
"column 2" "data_type_for_column_2",
... )

この問題を解決するにはどうすればよいですか? Excel 列のデータ型は、SQL サーバーのデータ型と同じですか? ある種のマッピングはありますか?私を助けてください。ありがとうございました

4

3 に答える 3

1

OleDbDataReader.GetSchemaTableは、スプレッドシートの基になるデータ型を示します。これ(引用):

列の.NETFrameworkタイプにマップします。

次に、それを適切なSqlDbTypeにマップする必要があります。それを行う方法についてのアイデアについては、この他の回答を確認してください。

副次的な点として取り上げたかったもう1つのポイントは、「行の読み取り/行の挿入」ではなく、ExcelからSQLServerへのデータの一括読み込みを検討することでした。あなたが話しているデータ量はわかりませんが、それによってプロセスがスピードアップする可能性があります。

于 2010-11-04T09:49:10.397 に答える
0

GetTableSchema()..を使用して、列のデータ型を把握できます。

              DataTable  schema  =  rdr.GetSchemaTable();   

              foreach  (DataRow  row  in  schema.Rows)     
              {   
                    foreach  (DataColumn  col  in  schema.Columns)   
                          Console.WriteLine(col.DataType);   
              }   
于 2010-11-04T09:42:52.490 に答える
0

使えると思います。sql_variantデータ型がどのようなものになるかわからない場合は、私はそれを見てみます。

http://msdn.microsoft.com/en-us/library/ms173829.aspx

于 2010-11-04T09:37:40.570 に答える