1

これは比較的簡単な質問だと思いますが、数時間経っても答えを見つけることができず、データベースの素晴らしい世界にまだ慣れていません。

私は Webmatrix を使い始めており、13 列と 200 行を少し超えるデータベースをインポートしようとしています (すべてをもう一度入力したくないので十分です)。

私の仕事はすべてオフラインのままで、少なくともあと数か月はオンラインになりません。これまで、私は Mac (php、mysql など) で作業してきましたが、Webmatrix を試すために PC に切り替えました。Webmatrix にデータベースをインポートするのに十分な単純な機能が見つからなかったため、Mac の phpMyAdmin から SQL ファイルをエクスポートし、cshtml ページ (コーディング カミソリ) を介して 1 回実行するのが最も簡単な方法であると考えました。

いくつかの調整を加えて、この方法でテーブルを再作成し、個々の行に値を挿入することもできますが、一度に複数の行を挿入できないようです。

私の意図したコードは基本的に次のとおりです。

var db = Database.Open("Database");
var insertQuery = "INSERT INTO table (field1, field2, field3) VALUES ('val1', 'val2', 'val3'),('val4','val5','val6'),(etc)";
db.Execute(insertQuery);

ここで何がうまくいかないのか、誰かが光を当てることができますか? また、データベースをインポートする他の方法も調べました。MySQL ベンチマークについて読みましたが、それは私の頭を少し超えていることを認めます。

前もって感謝します。

4

1 に答える 1

0

オプションは、使用しているデータベースのタイプによって異なります。デフォルトの WebMatrix データベース (SQL Compact Edition 4.0) を使用している場合は、PHP データを csv ファイルに保存し、WebMatrix で File.ReadAllLines を使用してそれを読み取ることができます。これにより、データの行を表すカンマ区切りの値をそれぞれ含む文字列の配列が得られます。string.Split を使用して個々の値の配列を作成し、それを foreach ループ内に挿入できます。

var rows = File.ReadAllLines(path_to_csv_file);
foreach(var row in rows){
    var vals = row.Split(new[]{','});
    var sql = "INSERT INTO table(f1, f2, f3) VALUES (@0, @1, @2)";
    db.Execute(sql, data[0], data[1], data[2]);
}

SQL Server を使用している場合は、ファイルに対して BULK INSERT を使用できます。SQL CE には、他にもいくつかの方法があります。 SQL Server CE での一括挿入

于 2013-09-03T14:00:14.640 に答える