代码之家  ›  专栏  ›  技术社区  ›  Ohad Schneider

将Excel导入SQL Server CE

  •  1
  • Ohad Schneider  · 技术社区  · 16 年前

    我有一个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?

    1 回复  |  直到 9 年前
        1
  •  1
  •   Cade Roux    16 年前

    我会避免使用EF(至少对于这个)。

    您尚未发布数据库架构,但请查看 this this

    EF supports it in general, CE does not ,因此需要将其取消标记为服务器已分配,并在创建对象时进行分配。