2015-02-04 5 views
2

excel 파일에서 documentDB의 대량 데이터를 삽입하는 방법에 대해 하루 동안 서핑을했으나 어떤 정보도 얻지 못했습니다.Excel에서 documentDB의 대량 데이터를 가져 오는 방법은 무엇입니까?

내가 할 수있는 엑셀 파일에서 데이터를 읽고 나는 하나 개의 인스턴스에서 모든 레코드를 삽입 할 수

Service service = new Service(); 
    foreach(data in exceldata) //exceldata contains set of rows 
    { 
    var student = new Student(); 
    student.id= ""; 
    student.name = data.name; 
    student.age = data.age; 
    student.class = data.class; 
    student.id = service.savetoDocumentDB(collectionLink,student); //collectionlink is a string stored in web.config 
    students.add(student); 
    } 

Class Service 
{ 
public async Task<string> AddDocument(string collectionLink, Student data) 
     { 
      this.DeserializePayload(data); 
      var result = await Client.CreateDocumentAsync(collectionLink, data); 
      return result.Resource.Id; 
     } 
} 

documentDB

에 하나 하나를 삽입 할 수?

도움이 될 것 같습니다.

답변

5

업데이트 : (4/8/15) : DocumentDB는 JSON 파일, MongoDB, SQL Server 및 CSV 파일을 지원하는 데이터 가져 오기 도구를 방금 발표했습니다. 당신은 여기에서 찾을 수 있습니다 http://www.microsoft.com/en-us/download/details.aspx?id=46436

원래 답변 :

DocumentDB 당신은 대량 가져 오기는 좀 더 만들기 위해 DocumentDB의 저장 프로 시저를 활용할 수 있습니다, 그러나 ... 아직 엑셀 파일에서 가져 오기 대부분을 지원하지 않습니다 친한!

체크 아웃 Ryan's sample from MSDN :

/** 
* This script called as stored procedure to import lots of documents in one batch. 
* The script sets response body to the number of docs imported and is called multiple times 
* by the client until total number of docs desired by the client is imported. 
* @param {Object[]} docs - Array of documents to import. 
*/ 
function bulkImport(docs) { 
    var collection = getContext().getCollection(); 
    var collectionLink = collection.getSelfLink(); 

    // The count of imported docs, also used as current doc index. 
    var count = 0; 

    // Validate input. 
    if (!docs) throw new Error("The array is undefined or null."); 

    var docsLength = docs.length; 
    if (docsLength == 0) { 
     getContext().getResponse().setBody(0); 
    } 

    // Call the CRUD API to create a document. 
    tryCreate(docs[count], callback); 

    // Note that there are 2 exit conditions: 
    // 1) The createDocument request was not accepted. 
    // In this case the callback will not be called, we just call setBody and we are done. 
    // 2) The callback was called docs.length times. 
    // In this case all documents were created and we don't need to call tryCreate anymore. Just call setBody and we are done. 
    function tryCreate(doc, callback) { 
     var isAccepted = collection.createDocument(collectionLink, doc, callback); 

     // If the request was accepted, callback will be called. 
     // Otherwise report current count back to the client, 
     // which will call the script again with remaining set of docs. 
     // This condition will happen when this stored procedure has been running too long 
     // and is about to get cancelled by the server. This will allow the calling client 
     // to resume this batch from the point we got to before isAccepted was set to false 
     if (!isAccepted) getContext().getResponse().setBody(count); 
    } 

    // This is called when collection.createDocument is done and the document has been persisted. 
    function callback(err, doc, options) { 
     if (err) throw err; 

     // One more document has been inserted, increment the count. 
     count++; 

     if (count >= docsLength) { 
      // If we have created all documents, we are done. Just set the response. 
      getContext().getResponse().setBody(count); 
     } else { 
      // Create next document. 
      tryCreate(docs[count], callback); 
     } 
    } 
} 

현재 DocumentDB 데이터베이스 측 프로그래밍에 대한 (저장 프로 시저, 트리거, UDF를) 참조 문서를 찾을 수 있습니다 위의 http://azure.microsoft.com/en-us/documentation/articles/documentdb-programming/

+1

연결이 끊어집니다. 해야합니다 : https://code.msdn.microsoft.com/windowsazure/Azure-DocumentDB-NET-Code-6b3da8af –

+0

Ahhh thanks! 업데이트 된 :) –