1

我敢肯定这是一个比较简单的问题,但是几个小时后,我还是没能找到答案,而且我对美妙的数据库世界还是有些陌生。

我开始使用 Webmatrix,我正在尝试导入一个包含 13 列和 200 多行的数据库(刚好够了,所以我不想再全部输入)。

我所有的工作都处于离线状态,至少还要几个月才能上线。到目前为止,我一直在 Mac(php、mysql 等)上工作,只是切换到 PC 来尝试 Webmatrix。由于我找不到足够简单的功能来在 Webmatrix 中导入数据库,我认为最简单的方法可能是从我的 Mac 上的 phpMyAdmin 导出 SQL 文件并通过 cshtml 页面(编码剃刀)执行一次。

通过一些调整,我以这种方式重新创建了我的表,并且我还能够在单独的行中插入值,但是,我似乎一次无法插入多于一行。

我的预期代码基本上是:

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 回答