Sorry, create a new Edge's class: "Wrote": create class Wrote extends E
And put "Wrote" in the Edge's configuration. Lvc@ ᐧ On 25 August 2014 16:40, 'Curtis Mosters' via OrientDB < [email protected]> wrote: > Thanks Luca, I tried it out. The Person import works. But the more complex > vetrex and edge thing does not. > > And with... > > > *{ "edge": { "class": "Person", " ...I get* > > > *Exception in thread "main" java.lang.IllegalArgumentException: Type > error. The class Person does not extend class 'E' and therefore cannot be > considered an Edge *So I thought it was just a mistake. I changed it to a > Class E called "hasPost". And now I get: > > Exception in thread "main" java.lang.IllegalArgumentException: Property > value ca > n not be null > at com.tinkerpop.blueprints.util.ExceptionFactory. > propertyValueCanNotBeN > ull(ExceptionFactory.java:60) > at com.tinkerpop.blueprints.impls.orient.OrientElement. > validateProperty( > OrientElement.java:423) > at com.tinkerpop.blueprints.impls.orient.OrientElement.setProperty > (Orien > tElement.java:139) > at com.orientechnologies.orient.etl.transformer.OEdgeTransformer. > execute > Transform(OEdgeTransformer.java:102) > at com.orientechnologies.orient.etl.transformer. > OAbstractTransformer.tra > nsform(OAbstractTransformer.java:37) > at com.orientechnologies.orient.etl.OETLPipeline.execute( > OETLPipeline.ja > va:97) > at com.orientechnologies.orient.etl.OETLProcessor. > executeSequentially(OE > TLProcessor.java:459) > at com.orientechnologies.orient.etl.OETLProcessor.execute( > OETLProcessor. > java:253) > at com.orientechnologies.orient.etl.OETLProcessor.main( > OETLProcessor.jav > a:221) > + extracted 1 records (0 records/sec) - 1 records -> loaded 0 vertices (0 > vertic > es/sec) Total time: 1000ms [0 warnings, 0 errors] > + extracted 1 records (0 records/sec) - 1 records -> loaded 0 vertices (0 > vertic > es/sec) Total time: 2s [0 warnings, 0 errors] > > > > > > Am Montag, 25. August 2014 16:11:32 UTC+2 schrieb Lvc@: >> >> Hi Curtis, >> >> getting your structure on MySQL: >> >> - Person{id,name} >> - Post{person_id,title} >> >> You could configure 2 pipelines: >> >> 1. one with extraction of "select * from Person" >> 2. one with extraction of "select * from Post" >> >> >> *Example for (1)* >> >> { >> "config": { >> "verbose": true >> }, >> "extractor" : { >> "jdbc": { "driver": "com.mysql.jdbc.Driver", >> "url": "jdbc:mysql://localhost/mysql", >> "userName": "root", >> "userPassword": "", >> "query": "select * from Person" } >> }, >> "transformers" : [ >> { "vertex": { "class": "Person"} } >> ], >> "loader" : { >> "orientdb": { >> "dbURL": "plocal:/temp/databases/orientdb", >> "dbAutoCreate": true >> } >> } >> } >> >> >> *And this for (2):* >> { >> "config": { >> "verbose": true >> }, >> "extractor" : { >> "jdbc": { "driver": "com.mysql.jdbc.Driver", >> "url": "jdbc:mysql://localhost/mysql", >> "userName": "root", >> "userPassword": "", >> "query": "select * from Post" } >> }, >> "transformers" : [ >> { "vertex": { "class": "Post"} }, >> * { "edge": { "class": "Person", "direction" : "in", * >> >> >> * "joinFieldName": "person_id", >> "lookup":"Person.id", "unresolvedLinkAction":"CREATE"} }* ], >> "loader" : { >> "orientdb": { >> "dbURL": "plocal:/temp/databases/orientdb", >> "dbAutoCreate": true >> } >> } >> } >> >> >> Lvc@ >> >> ᐧ >> >> >> On 25 August 2014 15:23, 'Curtis Mosters' via OrientDB < >> [email protected]> wrote: >> >>> Well there is an idea that might be easy to be implemented. >>> >>> So the idea is to *auto-create* an edge. Let's take an example: >>> >>> MySQL classes are: >>> >>> - Person{id,name} >>> - Post{,person_id,title} >>> >>> Now we also create such classes in OrientDB. Now we tell OrientDB if >>> there is INSERT INTO Person or Post -> create edge on "id" to "person_id". >>> I don't but isn't that pretty simple for a database to do? >>> Well I have to say all of that is possible easily done with Java API but >>> I really want it with ETL because there is no real need for me to use the >>> Java API. >>> >>> Am Montag, 25. August 2014 14:15:00 UTC+2 schrieb Curtis Mosters: >>> >>>> Could you maybe take some time to create such an example? >>>> >>>> The current "edge" is bit hard to understand: >>>> >>>> edge: { >>>> class: "hasPost", >>>> joinFieldName: "person_id", >>>> lookup: "person.id", >>>> unresolvedLinkAction: "CREATE", >>>> if: "person_id is not null" >>>> } >>>> >>>> How can I say here to Link from person on post? I just need a small >>>> example and also the MySQL strcuture if possible. That would make >>>> everything clear. Thanks Luca. >>>> >>>> Am Montag, 25. August 2014 13:23:55 UTC+2 schrieb Lvc@: >>>>> >>>>> Curtis, >>>>> You could create 2 or more etl scripts, some that extract vertices and >>>>> other that extract edges. >>>>> >>>>> Lvc@ >>>>> >>>>> ᐧ >>>>> >>>>> >>>>> On 25 August 2014 12:25, 'Curtis Mosters' via OrientDB < >>>>> [email protected]> wrote: >>>>> >>>>>> Hi Luca, well your example is just reading one table from MySQL. One >>>>>> table with creating edges on it's entries. But in the usual cases that's >>>>>> not the way how to import from a MySQL. Or maybe I just didn't understood >>>>>> that example completely. But so far as I have seen it, you used one table >>>>>> from MySQL that contained {id,...,friend_id}. You created profiles on >>>>>> that >>>>>> id and then created edge on that id's. Is that right? >>>>>> >>>>>> But just once again I have those data as usually stored in another >>>>>> table. So that cannot work for me. >>>>>> >>>>>> Am Donnerstag, 21. August 2014 15:56:05 UTC+2 schrieb Lvc@: >>>>>>> >>>>>>> ᐧ >>>>>>> On 21 August 2014 14:45, 'Curtis Mosters' via OrientDB < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> This is a great example Luca, thanks first of all. >>>>>>>> >>>>>>>> But could you additionally add information about the MySQL schema >>>>>>>> and do I understand it correctly that you get the classes >>>>>>>> Person,Friend and >>>>>>>> an edge. But where comes the friend data? >>>>>>>> >>>>>>> >>>>>>> >>>>>>> Friend in my case is an Edge class. (create class Friend extends E). >>>>>>> It's useful to create ad-hoc edge classes instead that the generic "E": >>>>>>> >>>>>>> http://www.orientechnologies.com/docs/1.7.8/orientdb.wiki/Gr >>>>>>> aph-Schema.html >>>>>>> >>>>>>> Lvc@ >>>>>>> >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> Am Donnerstag, 21. August 2014 13:25:47 UTC+2 schrieb Lvc@: >>>>>>>>> >>>>>>>>> Hi Curtis, >>>>>>>>> ETL is very powerful and we're improving it everyday with users' >>>>>>>>> feedback. We want to let it to be final for 2.0, so we can bundle >>>>>>>>> with it. >>>>>>>>> By the way Enterprise Edition >>>>>>>>> <http://www.orientechnologies.com/orientdb-enterprise> will have >>>>>>>>> a Web Interface to edit it, and in the future also to debug it. >>>>>>>>> >>>>>>>>> Unfortunately I don't understand in your example table1 & 2 with >>>>>>>>> both name_id field. Look at this example about Friendship. I want to >>>>>>>>> connect a social network like app. >>>>>>>>> >>>>>>>>> This is an example of ETL configuration. My comments begins with >>>>>>>>> // but remove them from real config file: >>>>>>>>> >>>>>>>>> { >>>>>>>>> config: { >>>>>>>>> verbose: true >>>>>>>>> }, >>>>>>>>> begin: [ >>>>>>>>> ], >>>>>>>>> extractor: { >>>>>>>>> "jdbc": { "driver": "com.mysql.jdbc.Driver", >>>>>>>>> "url": "jdbc:mysql://localhost/mysocialnetwork", >>>>>>>>> "userName": "root", >>>>>>>>> "userPassword": "root", >>>>>>>>> "query": "select * from profile" >>>>>>>>> } >>>>>>>>> }, >>>>>>>>> transformers : [ >>>>>>>>> { >>>>>>>>> // THIS IS ONLY A LOG, USEFUL TO TRACE WHAT ARRIVES FROM >>>>>>>>> MYSQL >>>>>>>>> log: { >>>>>>>>> prefix: "MySQL -> " >>>>>>>>> } >>>>>>>>> }, >>>>>>>>> { >>>>>>>>> merge: { >>>>>>>>> // LOOKUP BY ID: IF ALREADY PRESENT MERGE THE FIELDS BY >>>>>>>>> OVERWRITING THE DIFFERENT ONES >>>>>>>>> joinFieldName: "*id*", >>>>>>>>> lookup: "Profile.*id*" >>>>>>>>> } >>>>>>>>> }, >>>>>>>>> { >>>>>>>>> vertex: { >>>>>>>>> // TRANSFORM IT IN A VERTEX >>>>>>>>> class: "Profile" >>>>>>>>> } >>>>>>>>> }, >>>>>>>>> { >>>>>>>>> edge: { >>>>>>>>> // CONNECT THE FRIEND IN MYSQL COLUMN 'friend_id' >>>>>>>>> class: "Friend", // Friend is the edges' class >>>>>>>>> joinFieldName: "friend_id", // >>>>>>>>> lookup: "Profile.id", >>>>>>>>> unresolvedLinkAction: "CREATE", // IF DOESN'T EXIST YET, >>>>>>>>> CREATE THE VERTEX EMPTY. WILL BE FURTHER UPDATED >>>>>>>>> if: "friend_id is not null" >>>>>>>>> } >>>>>>>>> }, >>>>>>>>> { >>>>>>>>> log: { >>>>>>>>> prefix: "Vertex -> " >>>>>>>>> } >>>>>>>>> } >>>>>>>>> ], >>>>>>>>> loader : { >>>>>>>>> orientdb: { >>>>>>>>> dbURL: "remote:localhost/yourdb", >>>>>>>>> dbUser: "admin", >>>>>>>>> dbPassword: "admin", >>>>>>>>> dbAutoCreate: true, >>>>>>>>> tx: true, >>>>>>>>> batchCommit: 1000, >>>>>>>>> dbType: "graph", >>>>>>>>> classes: [ >>>>>>>>> ], >>>>>>>>> indexes: [ >>>>>>>>> ] >>>>>>>>> } >>>>>>>>> } >>>>>>>>> } >>>>>>>>> >>>>>>>>> >>>>>>>>> Lvc@ >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> On 21 August 2014 13:05, 'Curtis Mosters' via OrientDB < >>>>>>>>> [email protected]> wrote: >>>>>>>>> >>>>>>>>>> Hey so I have now some experiences with ETL. I think this is >>>>>>>>>> great for import. That's why I want to improve the importing process >>>>>>>>>> now. >>>>>>>>>> >>>>>>>>>> 1. First of all is it possible to run several imports >>>>>>>>>> parallel(not with several consoles) or if one is done start >>>>>>>>>> another >>>>>>>>>> instantly? >>>>>>>>>> 2. How do I create an edge (https://github.com/orientechn >>>>>>>>>> ologies/orientdb-etl/wiki/Transformer#edge >>>>>>>>>> >>>>>>>>>> <https://github.com/orientechnologies/orientdb-etl/wiki/Transformer#edge> >>>>>>>>>> is not helpful for me) >>>>>>>>>> >>>>>>>>>> Let's say I have 2 tables in MySQL: >>>>>>>>>> >>>>>>>>>> table1 with {*name_id*,*name*} and table2 with {*name_id*, >>>>>>>>>> *text_id*,*text*} >>>>>>>>>> >>>>>>>>>> Now I want to get them connected (name_id) in OrientDB. >>>>>>>>>> >>>>>>>>>> One way would now be to import both tables as Class. That's easy >>>>>>>>>> and then create edges with the *name_id*. Everything is fine >>>>>>>>>> with that, but it would be much easier to generate edges with ETL if >>>>>>>>>> that >>>>>>>>>> is anyway possible. So I don't know what is more efficient. Someone >>>>>>>>>> else >>>>>>>>>> also said that Sails (https://github.com/vjsrinath/sails-orientdb) >>>>>>>>>> might be a good choice. >>>>>>>>>> >>>>>>>>>> If ETL allows that I could imagine about the following way: >>>>>>>>>> >>>>>>>>>> - read line of table1 -> safe in memory >>>>>>>>>> - look in table2 if name_id exists >>>>>>>>>> - -> if yes, create vertex Tabel1 and Table2 >>>>>>>>>> - -> if no, create vertex Tabel1 and Table2 and create an >>>>>>>>>> edge >>>>>>>>>> - and so on >>>>>>>>>> >>>>>>>>>> Of course this is very crazy if you imagine 30 tables or so. Was >>>>>>>>>> just an idea, just to check if that is already possible somehow. >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> >>>>>>>>>> --- >>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>> Google Groups "OrientDB" group. >>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>>> send an email to [email protected]. >>>>>>>>>> >>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>> >>>>>>>> --- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "OrientDB" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to [email protected]. >>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>> >>>>>>> >>>>>>> -- >>>>>> >>>>>> --- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "OrientDB" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected]. >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> -- >>> >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "OrientDB" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- > > --- > You received this message because you are subscribed to the Google Groups > "OrientDB" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- --- You received this message because you are subscribed to the Google Groups "OrientDB" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
