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 <
orient-database@googlegroups.com> 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 <
>>> orient-...@googlegroups.com> 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 <
>>>>> orient-...@googlegroups.com> 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 <
>>>>>>> orient-...@googlegroups.com> 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 orient-databa...@googlegroups.com.
>>>>>>>>
>>>>>>>> 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 orient-databa...@googlegroups.com.
>>>>>> 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 orient-databa...@googlegroups.com.
>>>> 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 orient-database+unsubscr...@googlegroups.com.
> 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 orient-database+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to