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/
>>>> Graph-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.

Reply via email to