2010-05-16 4 views
1

Excel 2007 형식으로 테이블을 만들었지 만 자연스럽게 그 아래에 저장할 수 있습니다. SQL Server Compact Edition 3.5 SP1 데이터베이스 테이블과 해당 열이 있습니다. 간단히 excel 파일의 데이터로 SQLCE 테이블을 채우고 싶습니다. 데이터는 문자열과 정수로만 구성됩니다.Excel을 SQL Server CE로 가져 오기

나는 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에서 지원하지 않는 서버 생성 키 및 서버 생성 된 값"로 충돌 . 나는 GUID (= 고유 식별자) 모든 아이디 유형을 변경하는 workaround을 시도하지만, 난 여전히 메시지를

EDIT2를 얻을 : 나는 StoreGeneratedPattern 속성을 "없음"을 변경하고 지금은 작동합니다. 흥미로운 점은 .SDF 파일이 런타임 디렉토리에 복사되고 복사본이 인 것으로 변경되었으므로 프로젝트에 연결된 .SDF의 변경 사항을 볼 수 없으므로 복사해야합니다. 수동으로

내 질문은 아직 남아 있습니다 - SQL Server CE 다음과 동등한가?

BULK 
INSERT YourDestinationTable 
     FROM 'D:\YourFile.csv' 
      WITH 
    (
       FIELDTERMINATOR = ',', 
       ROWTERMINATOR = '\n' 
    ) 
GO 

또는 SQL Server CE로 내보낼 수있는 Microsoft의 SQL Server 가져 오기 및 내보내기 마법사와 같은 것보다 좋습니다.

+1

Office interop을 사용하여 데이터베이스에 쓰기위한 Excel 파일과 SQLCE 드라이버를 읽는 간단한 C# 프로그램을 작성해보십시오. Office interop을 마음에 기억하지 못하기 때문에 예제를 제공하지 않습니다 ... –

답변

1

저는 EF를 사용하지 않을 것입니다.

데이터베이스 스키마를 게시하지 않았지만 thisthis을 확인하십시오.

EF supports it in general, CE does not이지만 서버 할당으로 표시를 해제하고 개체를 만들 때 지정해야합니다.

+0

감사합니다. 그 결과, 내 ID 열을 StoreGeneratedPattern = None으로 전환했습니다. –

관련 문제