我确信这是一个相对简单的问题,但经过几个小时后,我找不到答案,而且我对数据库的精彩世界还有点新鲜。
我开始使用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基准测试的内容,但承认这有点过头了。
提前致谢。
答案 0 :(得分: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也有其他几种方法:Bulk Insert In SQL Server CE