4

SQL Server には既にいくつかのテーブルがあり、いくつかのフラット ファイルからテーブルにデータを入力する C# プログラムを作成しています。SQLBulkCopyテーブルのロードに使用する予定です。

SQLBulkCopy の各 DataTable のすべての列を定義するのは大変な作業になる可能性があります。既存の SQL Server テーブルの定義から C# でこれらの DataTables を生成する簡単な方法はありますか?


フラットファイルが異なる奇妙なレイアウトにあり、挿入する前にC#コードで解析する必要があるため、Bulk insertまたは使用できません。bcp

4

2 に答える 2

16

ブルートフォースアプローチが必要な場合は、すべてのテーブルに次を使用できます。

    DataTable dt = new DataTable();
    using (SqlConnection conn = new SqlConnection("Some SQLConnectionString")) {
        conn.Open();
        using (SqlDataAdapter adapter = new SqlDataAdapter("SELECT TOP 0 * FROM SomeTable", conn))
        {
            adapter.Fill(dt);
        };
    };

SELECT TOP 0、レコードのないテーブル構造のみを返します。

于 2012-07-31T21:58:15.350 に答える
1

フラットファイルをSQLにロードする簡単な方法を探している場合は、BULKINSERTを使用できます。区切り文字を指定するだけで、ファイル内の列がデータベーステーブルと同じ順序で配置されている限り、すべてが自動的にマップされます。一括挿入を実行するには追加の権限が必要ですが、私の経験からすると、これがプロセスを処理するための最も迅速で効率的な方法です。

BULK INSERT Database.dbo.Table
FROM 'C:\inetpub\website\file.csv'
WITH (FIELDTERMINATOR = ',')
于 2012-07-31T21:55:48.327 に答える