0

データベースにダンプしたい csv ファイルがあります。そのため、ファイルのループを作成し、ループ内で各行の data というリストを作成しました

StreamReader file = new StreamReader(itemChecked.ToString());//read the file

while ((line = file.ReadLine())  != null)
{
    if (start_flag == true) // start processing the numbers, get the real data
    {
        List<string> data = new List<string>();
        data.AddRange(line.Replace("\"", "").Split(',').AsEnumerable());
    }
}

ここまでは順調ですね。

次に、リスト データをデータベースに挿入します。リストはかなり大きいです。次のように、それらのすべてを入力したくありません。

insert into table1 (tablenames) values (a, b, c on and on)

リストをループしてデータをデータベースに挿入するにはどうすればよいですか?

4

2 に答える 2

0

バルクコピーを使用して、csvファイルからすべてのデータを一度にインポートします。ここにサンプルがあります:

http://www.codeproject.com/Articles/30705/C-CSV-Import-Export

これがあなたが探しているものであることを願っています

ご挨拶

于 2012-04-30T16:52:11.043 に答える
0

最初に、ADO.NET Driver for MySQL (Connector/NET)を使用してデータベースに接続する必要があります。

次に、データベースへの接続を開き、データを挿入します。

var connection = new MySqlConnection();
connection.ConnectionString =
   "server=localhost;"
    + "database=DBNAME;"
    + "uid=USERNAME;"
    + "password=PASSWORD;";

connection.Open();

foreach(var datum in data) 
{
    var command = connection.CreateCommand();
    command.CommandText =
        "insert into table1 (tablenames)"
        + " values "
        + "(a, b, c on and on)";

    var result = command.ExecuteReader();
}

私の例は、この記事に基づいています。これは完全な解決策ではありませんが、開始する必要があります。MySQL トランザクションを調べて、挿入を効率的なグループにバッチ処理することをお勧めします (データ サイズによっては、一度に 100 ~ 1000 になる場合があります)。

于 2012-04-30T16:48:18.500 に答える