How to browse local Java App Engine datastore?

Viewed 41744

It seems there is no equivalent of Python App Engine's _ah/admin for the Java implementation of Google App Engine.

Is there a manual way I can browse the datastore? Where are the files to be found on my machine? (I am using the App Engine plugin with Eclipse on OS X).

7 Answers

There's currently no datastore viewer for the Java SDK - one should be coming in the next SDK release. In the meantime, your best bet is to write your own admin interface with datastore viewing code - or wait for the next SDK release.

Java App Engine now has a local datastore viewer, accessible at http://localhost:8080/_ah/admin.

I have local datastore on my Windows+Eclipse environment on \war\WEB-INF\appengine-generated\local_db.bin

As far as I understood it uses internal format named "protocol buffers". I don't have external tools to present the file in human-readable format.

I'm using simple "viewer" code like this:

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));
        }
    }
}

Open the \war\WEB-INF\appengine-generated\local_db.bin file with a text editor, like Notepad++.

The data is scrambled but at least you can read it and you can copy to extract it.

For me the fix was to do the login using below gcloud command

gcloud auth application-default login
Related