【问题标题】:Inserting multiple rows in Webmatrix database在 Webmatrix 数据库中插入多行
【发布时间】:2013-09-03 07:01:46
【问题描述】:

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

我开始使用 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 基准的信息,但承认这有点超出我的想象。

提前致谢。

【问题讨论】:

    标签: sql database razor insert webmatrix


    【解决方案1】:

    您的选项取决于您使用的数据库类型。如果您使用默认的 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 还有其他几种方法:Bulk Insert In SQL Server CE

    【讨论】:

    • 感谢您快速且非常有帮助的回答,迈克。我必须做更多的研究才能使这一切正常工作,但是以您的解决方案为基础,这一切都融合在一起了。
    猜你喜欢
    • 1970-01-01
    • 2012-07-29
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多