我有一个excel格式的表(2007,但我可以自然地保存为下面的任何内容),还有一个SQL Server Compact Edition 3.5 SP1数据库表和相应的列。我只想用excel文件中的数据填充SQLCE表。数据仅由字符串和整数组成。
我试过了
this utility
没用,我也试过这个
SQL script
BULK INSERT
在SQL Server CE中不支持。我还发现了这个
Microsoft tutorial
但我基本上是不知道当谈到SQL,提供者等。。。
我想出了以下代码(通过
this post
var fileName = string.Format("{0}\\DataValues.xls", Directory.GetCurrentDirectory());
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
var adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds, "anyNameHere");
DataTable dataTable = ds.Tables["anyNameHere"];
foreach (DataRow row in dataTable.Rows)
_entities.MyObjectSet.AddObject(new MyObject()
{
Foo= (string)row[1],
Bar= Convert.ToInt32(row[2]),
});
_entities.SaveChanges();
但是SaveChanges()崩溃了,“SQL Server Compact不支持服务器生成的键和服务器生成的值”。我试过了
workaround
将所有Id类型更改为GUID(=uniqueidentifier),但我仍然收到消息
编辑2:
.SDF
复制
它被改变了,所以你不会看到
.SDF公司
我的问题仍然存在-是否有一个SQL Server CE等效于以下内容?
BULK
INSERT YourDestinationTable
FROM 'D:\YourFile.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
或者更好—类似于Microsoft的SQL Server导入和导出向导,可以导出到SQL Server CE?