Hi, Ignite has 2 JDBC drivers. 1. Client driver [1] starts client node (has all failover features) and you have to pass client node config in URL. 2. Thin Driver [2] that connect directly to one of Ignite server node.
So, you need a first one to be able to use streaming mode. [1] https://apacheignite-sql.readme.io/docs/jdbc-client-driver [2] https://apacheignite-sql.readme.io/docs/jdbc-driver On Fri, Mar 30, 2018 at 1:16 PM, <[email protected]> wrote: > Hi Andrey, > > > > I am trying to run [2], as: > > // Register JDBC driver. > > Class.forName("org.apache.ignite.IgniteJdbcDriver"); > > // Opening connection in the streaming mode. > > Connection conn = DriverManager.getConnection(" > jdbc:ignite:cfg://streaming=true@file:///etc/config/ignite-jdbc.xml"); > > > > However, I'm a bit confused about that setting in [2] about the > ignite-jdbc.xml. > > > > I do not know how to find or create the xml, and here I run the ignite > node via JVM. > > > > If I can write java code to produce the ignite-jdbc or not? Or only > complete Spring XML configuration? > > > > By the way, I have tried the [1], that worked well. > > > > Finally, I still need to use the SQL as a client node, and quick write > data into cache. > > > > Thank you for helping me > > > > Rick > > > > > > *From:* Andrey Mashenkov [mailto:[email protected]] > *Sent:* Thursday, March 29, 2018 6:20 PM > *To:* [email protected] > *Subject:* Re: How to insert multiple rows/data into Cache once > > > > Hi, > > > > Try to use DataStreamer for fast cache load [1]. > > If you need to use SQL, you can try to use bulk mode updated via JDBC [2] > > > > > > Also a COPY SQL command [3] will be available in next 2.5 release. > > The feature is already in master, you can try to build from it. See > example [4] > > . > > > > [1] https://apacheignite.readme.io/docs/data-streamers > > [2] https://apacheignite.readme.io/v2.0/docs/jdbc- > driver#section-streaming-mode > > [3] https://issues.apache.org/jira/browse/IGNITE-6917 > > [4] https://github.com/apache/ignite/blob/master/examples/ > src/main/java/org/apache/ignite/examples/sql/SqlJdbcCopyExample.java > > > > On Thu, Mar 29, 2018 at 11:30 AM, <[email protected]> wrote: > > Dear all, > > > > I am trying to use the SqlFieldsQuery sdk to insert data to one cache on > Ignite. > > > > I can insert one data into one cache at a time. > > > > However, I have no idea to insert multiple rows/data into the cache once. > > > > For example, I would like to insert 1000 rows/data into the cache once. > > > > Here, I provide my code to everyone to reproduce my situation. > > *public* *class* IgniteCreateServer { > > *public* *class* Person { > > @QuerySqlField > > *private* String firstName; > > @QuerySqlField > > *private* String lastName; > > *public* Person(String firstName, String lastName) { > > *this*.firstName = firstName; > > *this*.lastName = lastName; > > } > > } > > *public* *static* *void* main(String[] args) { > > cacheConf.setName("igniteCache"); > > *cacheConf**.setIndexedTypes(String.**class**, String.**class**)*; > > cacheConf.setCacheMode(CacheMode.*REPLICATED*); > > cacheConf.setAtomicityMode(CacheAtomicityMode.*ATOMIC*); > > cfg.setCacheConfiguration(cacheConf); > > Ignite igniteNode = Ignition.*getOrStart*(cfg); > > *IgniteCache* cacheKeyvalue = *igniteNode**.getOrCreateCache(* > *cacheConf**)*; > > > > *long* starttime, endtime; > > starttime = System.*currentTimeMillis*(); > > *int* datasize = 100000; > > *for* (*int* i = 0; i < datasize; i++) { > > cacheKeyvalue.put("key " + Integer.*toString*(i), Integer.*toString*(i > )); > > } > > endtime = System.*currentTimeMillis*(); > > System.*out*.println("write " + datasize + " pairkeyvalue data: spend " > + (endtime - starttime) + "milliseconds"); > > //========================================================== > ======================================================= > > > > cacheCfg.setName("personCache"); > > cacheCfg.setIndexedTypes(String.*class*, Person.*class*); > > cacheCfg.setCacheMode(CacheMode.*REPLICATED*); > > cacheCfg.setAtomicityMode(CacheAtomicityMode.*ATOMIC*); > > *IgniteCache* cacheKeyTable = igniteNode.getOrCreateCache(cacheCfg); > > > > *long* starttime1, endtime1; > > starttime1 = System.*currentTimeMillis*(); > > *for* (*int* i = 0; i < datasize; i++) { > > cacheKeyTable.query(*new* SqlFieldsQuery("INSERT INTO > Person(_key,firstName,lastName) VALUES(?,?,?)") > > .setArgs(i, "key " + Integer.*toString*(i), Integer.*toString*(i))); > > } > > endtime1 = System.*currentTimeMillis*(); > > System.*out*.println("write" + datasize + " table data: spend " + ( > endtime1 - starttime1) + "milliseconds"); > > } > > > > The my code show as: > > “write 100000 pairkeyvalue data: spend 4734 milliseconds > > write 100000 table data: spend 2846 milliseconds” > > > > From the above result, I feel that using the SQL to insert data to cache > is faster than using cache.getall(). > > > > I am not sure if this is correct or not? > > > > In addition, that is important for me to insert data into cache via the > use of SQL, > > so I would like to insert multiple rows/data to accelerate it. > > > > if any further information is needed, I am glad to be informed and will > provide to you as soon as possible. > > > > Thanks > > > > Rick > > > > > > > > > > > > > > -- > 本信件可能包含工研院機密資訊,非指定之收件者,請勿使用或揭露本信件內容,並請銷毀此信件。 This email may contain > confidential information. Please do not use or disclose it in any way and > delete it if you are not the intended recipient. > > > > > > -- > > Best regards, > Andrey V. Mashenkov > > > -- > 本信件可能包含工研院機密資訊,非指定之收件者,請勿使用或揭露本信件內容,並請銷毀此信件。 This email may contain > confidential information. Please do not use or disclose it in any way and > delete it if you are not the intended recipient. > -- Best regards, Andrey V. Mashenkov
