导入Excel到SQL Server CE
我有一个excel格式的表格(2007年,但我可以自然保存为下面的任何东西),并且我有一个SQL Server Compact Edition 3.5 SP1数据库表格和相应的列。我只是想用来自Excel文件的数据填充SQLCE表。数据仅包含字符串和整数。导入Excel到SQL Server CE
我试过this utility无济于事,我也试过这个SQL script但是它不起作用,因为SQL Server CE不支持BULK INSERT
。我也发现这个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精简支持。” 。我试过workaround改变所有标识类型GUID(唯一标识符=),但我仍然得到消息
EDIT2:我改变了StoreGeneratedPattern属性设置为“无”,现在它的工作原理。有趣的是,.SDF
文件被复制到运行时目录,并且副本被更改,所以在项目中链接的.SDF
中不会看到更改 - 您必须复制它手动
我的问题仍然存在 - 是否有一个SQL Server CE等效于以下?
BULK
INSERT YourDestinationTable
FROM 'D:\YourFile.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
甚至更好 - 像微软的SQL Server导入和导出向导,可以导出到SQL Server CE?
我会避免使用EF(至少为此)。
虽然EF supports it in general, CE does not,所以你需要取消标记为服务器分配,并在创建对象时分配它。
谢谢,这就是我最终做的,即将我的ID列切换到StoreGeneratedPattern = None – 2010-05-17 08:08:26
为什么不写一个简单的C#程序,它将使用Office interop来读取Excel文件和SQLCE驱动程序以写入数据库?我没有提供一个例子,因为我不记得Office interop的心脏... – 2010-05-16 22:09:55