James Thank you for the ideas. I forgot to mention that i am using sqllite as the datastore. Also, the second idea might work but hard to implement.
On Dec 3, 2:49 pm, James X Nelson <[email protected]> wrote: > Ok, so I hex dumped my local file, and it has the app id all over the > place. > > You may be able to try out the remote api between local installations, > or you're going to need to grep/cat find/replace the app ids in a copy > of your local ds.... > > If you don't like either of these options, write a servlet that takes > a namespace, parent key, kind, id/name value, and a fields param. > You can loop through all namespaces, then all kinds/tables with > metadata > queries.http://code.google.com/appengine/docs/java/datastore/metadataqueries.... > > Post each entity from one server of old app id, to a second server on > new appid. > > Send all of the key data, and all of the fields. You can say "any > request parameter that isn't a key value is a field", or use a > fields=name_of_other_fields,.... param to identify other request > params that are fields. > > old server loops through all data, posts to new server, where a > listening servlet reconstructs and saves the entity. > > Your only big worry would be field serialization / class cast problems > {putting a double where a long goes}. > > If your data is simple, no worries. > > Otherwise, I would prefix the field name with data type. > > ! NS : Parent/23 : Kind/Name = { > one: "data" > two: 1.0 > three: [45,71,3] > > } > > example url: > /localhost_save?ns=NS &kind=Kind &name=Name &parent=Parent%2023 > &str_fields=one &one=data &dbl_fields=two &two=1 ... > > I will leave it to you to decide if this is worth your time and how to > properly serialize your data to urls. > > A very lazy way to serialize would be to make a DeferredTask class > that takes your entities as a parameter, save them to typed, > serializable java fields, > then just use an object output stream to convert to byte[], encode > bytes in UTF-8, post to the other server that has same DeferredTask > class, > where it uses ObjectInputStream to deserialize the job, call .run(), > which just saves the entity/ies, and you don't have to deal with url > serialization. > > public class DataPort implements DeferredTask{ > YourPojo data; > public DataPort(YourPojo data){ > this.data = data; > > } > > public void run(){ > DatastoreServiceFactory.getDatastoreService().put(convertToEntity(data)); > > } > } > > Note, you can probably send pojos, or you could save raw entities to a > bunch of HashMaps, > HashMap<String, Double> doubles, HashMap<String, Long> longs, > HashMap<String, ....> > > This would also mean you could use a single class to do all your data. > > Here is the code from TaskOptions.Builder.payload(DeferredTask task) > > public TaskOptions payload(DeferredTask deferredTask) { > ByteArrayOutputStream stream = new ByteArrayOutputStream(1024); > ObjectOutputStream objectStream = null; > try { > objectStream = new ObjectOutputStream(stream); > objectStream.writeObject(deferredTask); > } catch (IOException e) { > throw new DeferredTaskCreationException(e); > } > payload = stream.toByteArray(); > if (getMethod() != Method.PULL) { > header("content-type", > DeferredTaskContext.RUNNABLE_TASK_CONTENT_TYPE); > method(Method.POST); > if (getUrl() == null) { > url(DeferredTaskContext.DEFAULT_DEFERRED_URL); > } > } > return this; > } > > You quite likely cannot post save tasks directly from one app to > another with task queue api, > but you can serialize that byte array, mimic the headers and use url > fetch to post to the /_ah/queue/deferred of your other app. > > ...Whatever you choose to use, you are to, never, ever upload a script > this insecure to production! > ...just saying. > > On Dec 3, 11:03 am, Vivek Puri <[email protected]> wrote: > > > > > > > > > I have moved my app from MS to HRD and as a result the app name has > > changed. As a result all the local data is associated with the old app > > name and i have to keep switching back and forth between app names > > while deploying and developing. Would anyone know how to migrate data > > from one local app to another local app. > > > Thank you -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
