代码之家  ›  专栏  ›  技术社区  ›  Jim Blackler

如何浏览本地Java应用程序引擎数据存储?

  •  84
  • Jim Blackler  · 技术社区  · 16 年前

    在google app engine的java实现中,似乎没有类似python appengine的ah/admin的功能。

    有没有手动浏览数据存储的方法?我的机器上的文件在哪里?(我在OSX上使用带Eclipse的应用引擎插件)。

    7 回复  |  直到 8 年前
        1
  •  111
  •   4 revs, 3 users 40%<br/>unknown&#13;    11 年前

    http://googleappengine.blogspot.com/2009/07/google-app-engine-for-java-sdk-122.html :“dev appserver终于有了一个数据查看器。在本地启动应用程序并将浏览器指向 http://localhost:8888/_ah/admin http://localhost:8000/datastore *去看看。”

    *截至 1.7.7

        2
  •  40
  •   Lipis    12 年前

    目前还没有JavaSDK的数据存储查看器——下一个版本的SDK中应该会有一个。同时,最好的办法是编写自己的管理界面和数据存储查看代码,或者等待下一个sdk版本。

    Java应用程序引擎现在有一个本地数据存储查看器,可在 http://localhost:8080/_ah/admin 是的。

        3
  •  6
  •   Stephen Denne    16 年前

    我的windows+eclipse环境中有本地数据存储在\war\WEB-INF\appengine generated\local_db.bin

    据我所知,它使用名为“协议缓冲区”的内部格式。我没有外部工具来以人类可读的格式显示文件。

    我正在使用简单的“查看器”代码,如下所示:

    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));
            }
        }
    }
    
        4
  •  2
  •   Matyas    12 年前

    在最新版本的sdk中( 1.7.6条+ )dev服务器的管理部分随它一起改变了它的位置

    分析服务器输出日志,我们可以看到它可以在以下位置访问:

    http://localhost:8000

    以及 数据存储 观众:

    http://localhost:8000/datastore

    看起来很整洁-根据谷歌的新设计指南。

        5
  •  1
  •   gw0    12 年前

    因为google app engines datastore viewer不支持显示引用实体的集合,所以我修改了paul的版本以显示所有子实体:

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

    应注意,空集合/引用实体不显示任何内容。

        6
  •  1
  •   Daniel De León    9 年前

    打开 \war\WEB-INF\appengine-generated\local_db.bin 带有文本编辑器的文件,如记事本++。

    数据被置乱,但至少你可以读取它,你可以复制来提取它。

        7
  •  0
  •   Aniruddha Das xing    6 年前

    对我来说,修复方法是使用下面的 gcloud 命令

    gcloud auth application-default login