2009-07-09 2 views

답변

6

나는 \ WEB-INF \의 \ local_db.bin

에서 appengine이 생성 \ 전쟁에 내 Windows + Eclipse 환경의 로컬 데이터 저장소를 가지고 지금까지 내가이 "프로토콜 버퍼"라는 이름의 내부 형식을 사용하여 이해한다. 필자는 파일을 사람이 읽을 수있는 형식으로 제시 할 수있는 외부 도구가 없습니다. 나는이 같은 간단한 "뷰어"코드를 사용하고

:

public void doGet(HttpServletRequest req, HttpServletResponse resp) 
    throws IOException 
{ 

    resp.setContentType("text/plain"); 

    final DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); 
    final Query query = new Query("Table/Entity Name"); 
    //query.addSort(Entity.KEY_RESERVED_PROPERTY, Query.SortDirection.DESCENDING); 

    for (final Entity entity : datastore.prepare(query).asIterable()) { 
     resp.getWriter().println(entity.getKey().toString()); 

     final Map<String, Object> properties = entity.getProperties(); 
     final String[] propertyNames = properties.keySet().toArray(
      new String[properties.size()]); 
     for(final String propertyName : propertyNames) { 
      resp.getWriter().println("-> " + propertyName + ": " + entity.getProperty(propertyName)); 
     } 
    } 
} 
+0

코드가 좋지만 쿼리 생성자의 매개 변수가 잘못되었습니다. 표가 올바르지 않습니다. 표제가 정확하지 않습니다. 방명록 예제에서는 행인 "인사말"이됩니다.시도했지만 작동하지 : 최종 쿼리 쿼리 = 새 쿼리 ("방명록/인사말"); 다른 문제 : 코드와 함께 테이블의 다른 키/이름의 내용을 어떻게 표시합니까? guestbook1, gb2 등과 같습니다. – Timo

39

자바 SDK에 대한 데이터 저장소 뷰어는 현재 없습니다 - 하나는 다음 SDK 릴리스 오는되어야한다. 그 동안 데이터 저장소보기 코드를 사용하여 관리자 인터페이스를 작성하거나 다음 SDK 출시를 기다리는 것이 가장 좋습니다.

Java App Engine에는 로컬 데이터 저장소 뷰어가 있으며 http://localhost:8080/_ah/admin에서 액세스 할 수 있습니다.

+0

이것은 중복되어 있습니다. 위의 dfrankow의 게시물을 참조하십시오. –

+23

당신은 며칠 게시 된 블로그 게시물에 대한 링크를 의미합니다 _이 _ 답변을 게시 했습니까? '시대에 뒤진'나는 받아 들일 것이다. 그러나 중복되고 투표는 다소 잔인하다. –

+1

동의합니다. 그 당시의 좋은 대답; 지금 구식. – mcherm

110

http://googleappengine.blogspot.com/2009/07/google-app-engine-for-java-sdk-122.html는 "마지막으로 긴, dev에 애플리케이션 서버는 데이터 뷰어를 가지고 로컬로 응용 프로그램을 시작하고 체크 아웃 http://localhost:8888/_ah/adminhttp://localhost:8000/datastore *에 브라우저를 가리 킵니다.."

public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { 
    String entityParam = req.getParameter("e"); 

    resp.setContentType("text/plain"); 
    final DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); 

    // Original query 
    final Query queryOrig = new Query(entityParam); 
    queryOrig.addSort(Entity.KEY_RESERVED_PROPERTY, Query.SortDirection.ASCENDING); 

    for (final Entity entityOrig : datastore.prepare(queryOrig).asIterable()) { 

     // Query for this entity and all its descendant entities and collections 
     final Query query = new Query(); 
     query.setAncestor(entityOrig.getKey()); 
     query.addSort(Entity.KEY_RESERVED_PROPERTY, Query.SortDirection.ASCENDING); 

     for (final Entity entity : datastore.prepare(query).asIterable()) { 
      resp.getWriter().println(entity.getKey().toString()); 

      // Print properties 
      final Map<String, Object> properties = entity.getProperties(); 
      final String[] propertyNames = properties.keySet().toArray(new String[properties.size()]); 
      for(final String propertyName : propertyNames) { 
       resp.getWriter().println("-> " + propertyName + ": " + entity.getProperty(propertyName)); 
      } 
     } 
    } 
} 

그것은해야한다 : 1.7.7

+0

새 관리 인터페이스가 Native Datastore API에서 생성 한 종류/항목과 함께 작동하지 않습니다. 그래서 여전히 내 "뷰어"가 필요합니다. – Paul

+15

http : // localhost : 8888/_ah/admin이 나를 위해 챔피언처럼 일 했으므로 (포트가 변경된 것에 유의하십시오) -하지만 필자는 비교를 위해 AppWrench를 시험해 보겠습니다. –

+0

정말 고마워요! 지속성 문제를 디버깅하려면이 기능이 정말 필요했습니다. – SunnyD

1

구글 앱 엔진 데이터 저장소 뷰어가 참조 된 개체의 컬렉션을 표시하는 지원하지 않기 때문에 현재로

*, 나는 모든 하위 개체를 표시하는 바울의 버전을 수정 빈 콜렉션/참조 된 엔티티에는 아무것도 표시되지 않습니다. SDK를 (1.7.6+) dev에 서버의 관리 부분의 최신 버전의

+0

이 코드는 모든 엔티티와 하위 엔티티를 찾습니다. 하위 엔티티에도 하위 엔티티가 있으면 어떻게됩니까? 이 함수는 재귀로 실행됩니까? –

2

은 우리가에 액세스 할 수 있는지 볼 수있는 서버 출력 로그를 분석 위치

변경되어 있습니다 :

http://localhost:8000

그리고 데이터 저장소 뷰어 :

http://localhost:8000/datastore

Google의 새로운 디자인 가이드 라인에 따르면 꽤 깔끔하게 보입니다.

1

메모장 + +와 같은 텍스트 편집기로 \war\WEB-INF\appengine-generated\local_db.bin 파일을 엽니 다.

데이터가 스크램블되었지만 적어도 읽을 수 있으며 복사하여 복사 할 수 있습니다.