Unfortunately I don't think there is a workaround. The Oracle JDBC driver does not return a table name for the result set [1]. Apparently some drivers do (MySQL, DB2 e.g.) and some don't (Oracle). I have a fix on GitHub for review [2].
Regards, Matt [1] https://community.oracle.com/thread/934039?tstart=0 [2] https://github.com/apache/nifi/pull/258 On Mon, Mar 7, 2016 at 8:34 AM, Ralf Meier <[email protected]> wrote: > Hi, > > is there a possible solution for this issue? > I have the problem that I can’t use 0.4.0 through the fact that we need > the PutElasticSearch Processor which was introduced in 0.5.0. > > It would be great if somebody could help here? > > (By the way mysql is working) > > BR > Ralf > > > Am 05.03.2016 um 23:48 schrieb Marcelo Valle Ávila <[email protected]>: > > Sorry, not see that you are using MS SQL Server. > I deployed a host with MS SQL and the issue reproduces too. > > My enviroment: > > Nifi 0.5.1 > Java 7 > MS SQL Server 2008 > > With Oracle doesn't works too, but with DB2 works perfect. > > > 2016-03-05 22:45 GMT+01:00 Marcelo Valle Ávila <[email protected]>: > >> Hello Ralf, >> >> I'm suffering the same behaviour, taking data from Oracle DB >> >> failed to process due to org.apache.avro.SchemaParseException: Empty name >> >> With NiFi 0.4.1 ExecuteSQL processor works fine, it seems that in 0.5.0 >> and 0.5.1 there is some bug with Oracle databases. >> >> I test Nifi 0.5.1 processor connecting with DB2 database and works fine. >> >> What Database engine are you using? >> >> Regards! >> >> >> 2016-03-05 10:36 GMT+01:00 Ralf Meier <[email protected]>: >> >>> Hi, >>> >>> thanks Matt for clarifying things. I got it at the processor is working >>> just fine with mysql. >>> Now I tried to use it with MS SQL. But here I get some issues and could >>> not figure out why it is not working. >>> >>> My Configuration is: >>> >>> Nifi: 0.5.0 >>> Java 8 >>> MS SQL 2014 >>> >>> DBCPConnectionPool: >>> Database Connection URL: jdbc:sqlserver://192.168.79.252:1433 >>> ;databaseName=testdb >>> Class Name: com.microsoft.sqlserver.jdbc.SQLServerDriver >>> Jar Url: file:///Users/rmeier/Downloads/tmp/sqljdbc42.jar >>> Database user: sa >>> Password: ********* >>> >>> In the ExecuteSQL I have the following configuration: >>> MY Connection Pooling. >>> SQL select query: select * from tuser; >>> >>> Max Wait Time: 0 seconds >>> >>> But when I run the processor I get the following error: >>> >>> 10:30:02 CET ERROR >>> ExecuteSQL[id=d32x32d7-c477-4b3b-a8b9-a77d0be27273] >>> ExecuteSQL[id=d32x32d7-c477-4b3b-a8b9-a77d0be27273] failed to process >>> due to org.apache.avro.SchemaParseException: Empty name; rolling back >>> session: org.apache.avro.SchemaParseException: Empty name >>> >>> 10:30:02 CET ERROR >>> ExecuteSQL[id=d32x32d7-c477-4b3b-a8b9-a77d0be27273] Processor >>> Administratively Yielded for 1 sec dure to processing failure >>> >>> >>> Did somebody of you have an idea how to solve this issue and what is the >>> root cause here fore? >>> >>> Thanks again for your help. >>> Ralf >>> >>> >>> >>> Am 04.03.2016 um 21:17 schrieb Matt Burgess <[email protected]>: >>> >>> Currently ExecuteSql will put all available rows into a single flow >>> file. There is a Jira case ( >>> https://issues.apache.org/jira/browse/NIFI-1251) to allow the user to >>> break up the result set into flow files containing a specified number of >>> records. >>> >>> I'm not sure why you get 26 flow files, although if you let the flow run >>> for 26 seconds you should see 26 flow files, each with the contents of the >>> "users" table. This is because it will run every second (per your config) >>> and execute the same query ("SELECT * FROM users") every time. There is a >>> new processor in the works ( >>> https://issues.apache.org/jira/browse/NIFI-1575) that will allow the >>> user to specify "maximum value columns", where the max values for each >>> specified column will be kept track of, so that each subsequent execution >>> of the processor will only retrieve rows whose values for those columns are >>> greater than the currently-held maximum value. An example would be a users >>> table with a primary key user_id, which is strictly increasing. The >>> processor would run once, fetching all available records, then unless a new >>> row is added (with a higher user_id value), no flow files will be output. >>> If rows are added in the meantime, then upon the next execution of the >>> processor, only those "new" rows will be output. >>> >>> I'm happy to help you work through this if you'd like to provide more >>> details about your table setup (columns, rows) and flow. >>> >>> Regards, >>> Matt >>> >>> On Fri, Mar 4, 2016 at 3:04 PM, Ralf Meier <[email protected]> wrote: >>> >>>> Hi, >>>> >>>> i tried to understand the executeSQL Processor. >>>> I created a database with a table „users“. This table has two entries. >>>> >>>> The problem with the processor is that it selected multiple times the >>>> entries from the table and created altogether 26 flow files even that only >>>> two entries where available. In addition each flow file consist of the both >>>> entires. >>>> >>>> I configured the executeSQL Processor the following way: >>>> Settings: Didn’t changed anything here except of auto terminate on >>>> failure: >>>> Scheduling: >>>> Cron based: * * * * * ? (Run every minute) >>>> Concurrent tasks: 1 >>>> Properties: >>>> Database Connection Pooling Service: DBmysql >>>> SQL select query: Select * from user >>>> My Wait Time: 0 seconds >>>> >>>> Then I used a processor: convertAvroToJson and a PutFile Processor. >>>> >>>> If I runt the flow it creates 26 flow files and each of them has all >>>> entries of the tables as json included. >>>> >>>> My goal is to extract the table ones. So that the entries are only >>>> created ones as json as row not 26 times. >>>> My understanding was that each row of the table will be one flow file >>>> and therefore for each line of the table would be one json file on disk >>>> (using PutFile). >>>> >>>> But it seems that this not right. What happens if I have millions of >>>> entries in such a table? Will this be done with one flow file? >>>> >>>> How would I configure that Nifi extract the table ones? >>>> >>>> It would be great if somebody could help me with this ? >>>> >>>> >>>> BR >>>> Ralf >>> >>> >>> >>> >> > >
