将Excel导入到SQL Server CE
我有一个excel格式的表(2007年,但我可以保存下面的任何东西,自然),我有一个SQL Server精简版3.5 SP1数据库表与相应的列。 我只是想用来自Excel文件的数据填充SQLCE表。 数据只包含string和整数。
我试过这个实用程序无济于事,我也试过这个SQL脚本,但它不会工作,因为BULK INSERT
在SQL Server CE中不受支持。 我也发现这个微软的教程,但我基本上无能为力,提到SQL,提供者等…
谢谢 !
编辑:我想出了下面的代码(通过这个职位 )
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支持”崩溃。 我尝试了将所有Idtypes更改为GUID(= uniqueidentifier)的解决方法 ,但仍然收到消息
编辑2:我将StoreGeneratedPattern属性更改为“无”,现在它工作。 一个有趣的事情是, .SDF
文件被复制到运行时目录,并且是被更改的副本 ,所以你不会看到项目中链接的.SDF
的更改 – 你必须复制它手动
我的问题仍然存在 – 有一个SQL Server CE等效于以下?
BULK INSERT YourDestinationTable FROM 'D:\YourFile.csv' WITH ( FIELDTERMINATOR = ',', ROWTERMINATOR = '\n' ) GO
或者甚至更好 – 像微软的SQL Server导入和导出向导,可以导出到SQL Server CE?
我会避免使用EF(至less为此)。
你还没有发布你的数据库模式,但看看这个和这个 。
尽pipeEF通常支持它,但CE不支持 ,因此您需要将其取消标记为服务器分配,并在创build对象时将其分配。