Getting Started with Mongo DB

Installation & Startup:

Download MongoDB installer for windows platform from and run. This simply extracts the binaries to your program files.

#Create DBPATH and log libraries:

Allocate a folder in your system that can be used for holding the mongo databases and also allocate a log file.

Ex – Allocated “C:\mongo\data\db” for databases and “C:\mongo\logs\mongo.log” as a log file.

#Starting the mongo database

Below are different ways of starting the mongodb:

1.    From the command prompt

Execute the mongod.exe present in the bin folder to start the database.

On command prompt à mongod --dbpath c:\mongo\data\db

There are other options that can also be specified alongwith dbpath. If dbpath is not provided, it looks for c:\data\db folder and gives error if not found.

To shutdown, press CTRL+C


2.    Starting with a config file

You can create a configuration file to define settings for the MongoDB server like the dbpath,logpath etc. Below is a sample file :

(This is a older format, for 2.6 version a new format is introduced. Older format is supported for backward compatibility)

#This is an example config file for MongoDB

dbpath = C:\Mongo\data\db

port = 27017

logpath = C:\Mongo\logs\mongo.log

Now you can use the below command –

C:\Program Files\MongoDB 2.6 Standard\bin>mongod --config mongo.conf

2014-04-15T10:27:18.883+0530 log file "C:\Mongo\logs\mongo.log" exists; moved to


As we haven’t specified “logappend” option in the config file, it allocates new file everytime you start the db. You can check the log file if you are getting errors while connecting to the db

To shutdown, use command “mongod –shutdown”


3.    Installing as Windows service:

Start the command prompt as administrator

You can use the below command to create the service, edit the same as per your settings:

sc create MongoDB binPath= "\"C:\Program Files\MongoDB 2.6 Standard\bin\mongod.exe\" --service --config=\"C:\Program Files\MongoDB 2.6 Standard\bin\mongo.conf\"" DisplayName= "MongoDB 2.6 Standard"

Please note this is a single line of command

You can now simply start/stop the service to start/shutdown the mongo database.


Using Mongo command shell:

Run Mongo.exe from \bin folder and you will see the below:

MongoDB shell version: 2.6.0

connecting to: test      //This is the Default database

Welcome to the MongoDB shell.

For interactive help, type "help".

For more comprehensive documentation, see

Questions? Try the support group


Some basic commands to get you started

> show dbs                  // show databases

admin  (empty)
local  0.078GB

> use names               // switch to a particular database/creates one if it does not exist

switched to db names

> db.mynames.insert({name: 'shraddha', email: '[email protected]'})           // Inserting document
WriteResult({ "nInserted" : 1 })

//Note that , ‘db’ points to the current database in use. Here, Collection “mynames” is automatically created when you insert a document

> show dbs

admin  (empty)
local  0.078GB
names  0.078GB

> db.mynames.find()               //query the db, select operation

{ "_id" : ObjectId("534cbfd03dfb3fbd86d8029d"), "name" : "shraddha", "email" : "[email protected]" }

//One more way of inserting……

> a={"name":"test3","email":"test3.other"}

{ "name" : "test3", "email" : "test3.other" }

> b={"name":"test4",email:"test4.other"}

{ "name" : "test4", "email" : "test4.other" }

> db.othernames.insert(a)

WriteResult({ "nInserted" : 1 })

> db.othernames.insert(b)

WriteResult({ "nInserted" : 1 })

> db.othernames.insert(c)

2014-04-15T19:40:24.798+0530 ReferenceError: c is not defined

//…In all the above inserts, the “_id” which has the unique key is auto-generated..


> coll=db.mynames


> coll.find()

{ "_id" : ObjectId("534cbfd03dfb3fbd86d8029d"), "name" : "shraddha", "email" : "[email protected]" }
{ "_id" : ObjectId("534d3b89f4d4b90697c205d6"), "name" : "test1", "email" : "test1.helical" }

> coll=db.othernames


> coll.find()

{ "_id" : ObjectId("534d3dc3f4d4b90697c205d7"), "name" : "test3", "email" : "test3.other" }
{ "_id" : ObjectId("534d3dcdf4d4b90697c205d8"), "name" : "test4", "email" : "test4.other" }


> coll.find({name:{$gt:"test3"}})                  //find documents where “name” is >”test3”

{ "_id" : ObjectId("534d3dcdf4d4b90697c205d8"), "name" : "test4", "email" : "test4.other" }

> coll.find({name:"test3"})

{ "_id" : ObjectId("534d3dc3f4d4b90697c205d7"), "name" : "test3", "email" : "test3.other" }


> coll.find({$or:[{name:{$gt:"test3"}},{name:"test3"}]})

{ "_id" : ObjectId("534d3dc3f4d4b90697c205d7"), "name" : "test3", "email" : "test3.other" }
{ "_id" : ObjectId("534d3dcdf4d4b90697c205d8"), "name" : "test4", "email" : "test4.other" }

> coll.find({$or:[{name:{$gt:"test3"}},{name:"test0"}]})

{ "_id" : ObjectId("534d3dcdf4d4b90697c205d8"), "name" : "test4", "email" : "test4.other" }

//Example - Manually inserting ObjectID field (key value)
> coll=db.testobjs


> coll.insert({_id:1,fld1:"abc",fld2:123})

WriteResult({ "nInserted" : 1 })

> coll.insert({_id:2,fld1:"cde",fld2:345})

WriteResult({ "nInserted" : 1 })

> coll.insert({_id:2,fld1:"cde",fld2:345})       //trying to insert duplicate value in _id

"Inserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: names.testobjs.$_id_  dup key: { : 2.0 }"}}

> coll.find()

{ "_id" : 1, "fld1" : "abc", "fld2" : 123 }
{ "_id" : 2, "fld1" : "cde", "fld2" : 345 }


Importing a csv file into mongodb:

Alter the below command as per your requirement and execute:

C:\Program Files\MongoDB 2.6 Standard\bin>mongoimport --db northwind --collection orders --type csv --file C:\Shraddha\Official\MongoDB\northwind-mongo-master\orders.csv --headerline

connected to:
2014-04-17T18:24:22.603+0530 check 9 831
2014-04-17T18:24:22.604+0530 imported 830 objects


Options used –

–db : name of the database
–collection : orders
–type : type of input file (we can also import tsv, JSON)
–file : path of the input file
–headerline : signifies that the first line in the csv file is column names


Shraddha Tambe

Helical IT Solutions

Introduction to XSD – XML Schema Definition

This blog will talk about Introduction to XSD – XML Schema Definition   XML Schema Definition:- XML Schema describes the structure of an XML document, what a given XML document can contain, in the same way that a database schema describes the data that can be contained in a database (i.e. table structure, data types, constraints etc.). The XML schema defines the shape, or structure, of an XML document, along with rules for data content. The purpose of an XML Schema is to define the legal building blocks of an XML document, just like a DTD. XML Schemas are richer and more powerful than DTDs. XSD (XML Schema Definition), a Recommendation of the World Wide Web Consortium (W3C)

  • defines elements that can appear in a document
  • defines attributes that can appear in a document
  • defines which elements are child elements
  • defines the order of child elements
  • defines the number of child elements
  • defines whether an element is empty or can include text
  • defines data types for elements and attributes
  • defines default and fixed values for elements and attributes
  • xml schema support datatype
  • XML Schemas are written in XML
  • XML Schemas support data types
  • XML Schemas support namespaces


  • XML Namespace is a mechanism to avoid name conflicts by differentiating elements or attributes within an XML document that may have identical names, but different definitions.
  • It solve the name conflict by using a prefix.

<code><h:table> <h:tr>         <h:td>IT</h:td>          <h:td>Management</td> </h:tr> </h:table> <f:table>                 <f:name>Playground</f:name>                     <f:width>100</f:width>                 <f:length>200</f:width> </f:table> </code>

namespace for the prefix must be defined. The namespace is defined by the xmlns attribute in the start tag of an element. The namespace declaration has the following syntax. xmlns:prefix=”URI“. <root> <h:table  xmlns:h=””> <h:tr>           <h:td>IT</h:td>                           <h:td>Management</h:td> </h:tr> </h:table> </root>   Advantages of XML Schemas Created Using XSD:-

  • XSD provides control over the type of data that can be assigned to elements and attributes.
  • XSD enables you to create your own data types. This feature enhances the flexibility of defining the structure of the XML document.
  • XSD enables you to specify restriction on data. For example, you can ensure that the content of an element is a positive integer value.
  • The syntax for defining an XSD is the same as the syntax used for xml documents. Therefore, it is easier to learn the syntax of an XSD.
  • XML schema content models can be used to validate mixed content.

XML schema is extensible. This enables you to reuse parts of a schema in another schema and derive custom data types from existing data types.

How to Use LUA as Web Script

Lua is commonly described as a “multi-paradigm” language, providing a small set of general features that can be extended to fit different problem types, rather than providing a more complex and rigid specification to match a single paradigm. Lua, for instance, does not contain explicit support for inheritance, but allows it to be implemented with metatables. Similarly, Lua allows programmers to implement namespaces, classes, and other related features using its single table implementation; first-class functions allow the employment of many techniques from functional programming; and full lexical scoping allows fine-grained information hiding to enforce the principle of least privilege.

lua base language is light – the full reference interpreter is only about 180 kB compiled– and easily adaptable to a broad range of applications.

Lua is a dynamically typed language intended for use as an extension or scripting language, and is compact enough to fit on a variety of host platforms.

It supports only a small number of atomic data structures such as

– Boolean values,

– Numbers (double-precision floating point by default), and

– Strings.

Typical data structures such as

– Arrays,

– Sets,

– Lists, and

– Records

can be represented using Lua’s single native data structure,

  •  the table, which is essentially a heterogeneous associative array.
Ex. a_table = {} -- Creates a new, empty table

NOTES--Lua programs are not interpreted directly from the textual Lua file, but are compiled into byte-code which is then run on the Lua virtual machine. The compilation process is typically transparent to the user and is performed during run-time, but it can be done offline in order to increase loading performance or reduce the memory footprint of the host environment by leaving out the compiler.

How  to Add Buttons in LUA and Handling their  Events…

Button1 = exSection:option(Button, “_button_click_event “,translate(“Button Section”))      Note:- exSection  is defined in a map, and button is defined in that exSection-section

Button1.title = translate(“CLICK  HERE TO PERFORM BUTTON-ACTION”)

Button1.inputtitle=translate(” START “)


Function Button1.write(self, section, value)        –Defining  button-click event function‘/etc/init.d/test_daemon  start’)        –Firing a system-command   to start a script


How  to call Templates from LUA and calling LUA-function from  template

testTemplate = exSection:option(Value, “_custom”, translate(“Template Testing… “))

testTemplate.template = “Template-Testing”



<%-  …… LUA code which you want to execute in your lua page…..  %>

<input type=”text ” name=”” id=” ” value=”<%-=h_testlval-%>”></input>                           ——Your HTML Code  here h_testlval   value comes from lua page.


Note:- In LUA page we called any input-type(EX.Button,TextBox..)From their name.

Function Definitions in lua page

function testTemplate.lastmodifiedtime(self, section)

local mdtime=st.mtime(“/usr/lib/test.txt”)

return‘%c’, mdtime)


How  to create MAP and SECTION in lua page

local m, s

m=Map (“testing”, translate (“TEST-APPLICATION CONFIGURATION “))

s = m: section (TypedSection, “testagent”, translate (“TESTAGENT”))

s.anonymous = true

Predefined Function of lua when using map.

I.            m.on_init=function(self)

———–Things which you want to execute before your lua page load———


II.            m.on_before_commit = function(self)

——Before commit———-


III.            m.on_after_commit=function(self)

—–After Commit———-


LUA Uses by different Organization in their Application.

  1. Adobe Photoshop Lightroom uses LUA for its user interface.
  2. Apache HTTP Server can use LUA anywhere in the request process (since version 2.3, via the core mod_lua module).
  3. Cisco uses LUA to implement Dynamic Access Policies within the Adaptive Security Appliance.
  4. iClone, a 3D real-time animation studio to create animation movies uses Lua in the controls of its new physic simulation.
  5. MySQL Proxy uses LUA for its extensions
  6. VLC media player uses LUA to provide scripting support.

Wikipedia since March 2013 LUA is used as a new templating language, and its template library is growing.


Pushpraj Kumar,

Helical IT Solutions

Date Calculation using Joda Time Library In iReport

Dear readers, this blog talks about Date Calculation using Joda Time Library In iReport

By using Joda Time Library , we can give default value expression for any datetype parameter .

Steps for using joda time library in iReport  :

  1. Download joda time library ,

2. Put its jar file “joda-time.jar” in the path of iReport : Tools/Options/Classpath/.

joda ireport

3. In the main report section properties , set import property to “org.joda.time.DateTime

Without  double quotes.

joda ireport 2

4. Now with the above configuration , we will be able to do any type of date calculation


5. Example :

   a. Start Day Of Current Month :

Take two parameters : now and startday respectively

For ‘now’ parameter give its class name as ‘java.util.Date’ and default value expression as new


b. Last day of previous Month :

Take two parameters : now and endday respectively

For ‘now’ parameter give its class name as ‘java.util.Date’ and default value expression as new

In the similar way we can do any type of date calculation for default value expression.

Rupam Bhardwaj

Helical IT Solutions

Installing Maven on Windows And Creating Maven project in Eclipse Juno

This blog talks about Installing Maven on Windows And Creating Maven project in Eclipse Juno

Maven is build and dependency management tool for java based application development, it is not install as windows service, rather is configured using windows environment variable.

In this post, I will summarize the steps need to install maven on windows operating system.

Step 1) Install java if not already installed

To install java download JDK installer from here and add/update JAVA_HOME variable

Go to control à system and security à system à advance system settings à advance tab à environment variables

Click on new under user variable give the variable name as JAVA_HOME and variable value path of JDK installation as shown below

Next go to system variable and select the path variable and click on edit button inset the JAVA_HOME variable created above go to end of the variable value and add ;%JAVA_HOME%\bin as shown below

Install Maven 2

Go to command line and check for class path whether is configured correctly or not.  Type the java – version as show below

Install Maven 3

It will show the version of java if class path is configured. If not shows the version repeat step 1.


Step 2) Maven Installation

Download Maven and extract it location where you want. Maven can be download from here.

I extracted in D:\Maven-3.2.1 you can choose your own.

Now, set MAVEN_HOME variable just you did as JAVA_HOME variable as show below

Install Maven 4

Install Maven 5



Step 3) Test for Installation

Maven installation is complete. Now lets test it for windows command prompt go to start menu and type cmd in application location search box press ENTER. Command prompt will be open and type mvn –version and hit ENTER. It will shows the version information of maven installed. If there is any error cross check the step 2.

Creating Maven Project in Eclipse

Step 1) Installing maven eclipse plug-in

Open the eclipse IDE go to Help à Eclipse Marketplace

Eclipse marketplace window will open and search tab is activated by default search for maven. All maven related plug-in will be display click and install the Maven Integration for Eclipse WTP (Juno). If it is already installed it will shows the Update as shown below.

Install Maven 6

Step 2) Creating Maven Project

To create dynamic web project with maven, navigate to the folder where you want to store the project and supply following command:

D:\Users\Java-Project\maven-project>mvn archetype:generate -DgroupId=com.helical.maven.sample -DartifactId=SampleMavenProject -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false


What is groupId in maven ?

groupId identifies a particular project uniquely across all projects, so we should follow an naming convention. A very simple and commonly used way of doing this is to use reverse of your domain, i.e. com.helical.maven.sample

A good way of maintaining the integrity of groupId is to use the project structure. In case the project is consists of multiple modules than every module should append an identifier to the parent groupId. i.e. com.helical.maven.sample, com.helical.maven.spring, com.helical.maven.struts .. etc.

What is artifactId in maven ?

artifactId is the name of war file without version, if you are creating it by yourself you are free to took any name of your choice in lower case and without any strange symbol. But if this is a third party jar than we have to take the name of jar as suggested by it’s distribution.

What is archetype in maven ?

Archetype is a Maven project templating toolkit which tells the maven the type of project we are going to create. Archetype enables the maven to create a template project of user’s choice so that the user can get the project up and running instantly.

“archetype:generate”  generates a new project from provided archetype or update the actual project if using a partial archetype. Maven provides a number of predefined archtypes, see more details from Maven Documentation.

What is archetypeArtifactId in maven ?

While creating a new project we provide the archetypeArtifactId that informs maven about what archetype to use to create the initial structure of the project. Maven looks it up from the archetypeCatalog and works accordingly. e.g. If we want to create a simple web-app project we specify -DarchetypeArtifactId=maven-archetype-webapp.


Convert Maven project to support Eclipse IDE

Here we are done with creating a dynamic web project in maven, now lets make this project compatible to Eclipse IDE. To make maven project support eclipse ide navigate to project folder and supply following command :

D:\Users\Java-Project\maven-project \SampleMavenProjec>mvn eclipse:eclipse -Dwtpversion=2.0

Now import the maven project in eclipse as shown below.

Go to File import or right click import and select the Existing Maven Project click next

Install Maven 7

Browse to above created project directory and follows the steps and click on Finish.

D3 DayHour Charts integration with Jaspersoft

This blog talks about D3 DayHour Charts integration with Jaspersoft

All the reports are develop using ireport 5.5 professional and jasper server 5.5

As html component of jasper server does not load any scripts in the html component, we loaded the script in one of the decorator page (jsp page). The page is located at the location:


In the page we included the scripts which we want to load. We added the following code in the jsp page at line no 46:

<script type=”text/javascript” language=”JavaScript” src=”${pageContext.request.contextPath}/scripts/d3.v3.min.js”></script>

The script to be added should be kept at location:


Meaning of DayHour Chart:-

This chart represents functioning of any particular thing during different hour of different days. These graph can be used to view variations in different situations.

DayHour Jaspersoft Integration

Integration with JasperServer:

The data which we use for developing the calendar view can be fetched from any database. The data fetched from database is stored in a variable and is then accessed in the html component using the same variable. Applying this of process makes the report dynamic instead of static. Few parameters can also be added in the report which can be used in query and/or html component.

Generally for these type of charts we pass a variable which contains required data containing date, hour and a value associated with that particular date and hour. The string is created according to JSON format, so that when accessed in script tag, can be easily converted to JSON object using eval function.

Any variable/parameter can be accessed as shown below:

“<script> var arr =”+$V{variable1}+” </script>”

Parameter in query:

Select * from table_name

where date between $P{parameter1}  and $P{parameter2}


The sample code of static chart can be found at:

The steps on how to integrate it with jasperserver was discussed in my previous blog(D3 Integrating with Jasperserver).



Avi Dawra

Helical IT Solutions

Installation of Pentaho 5.0.1 CE with Postgresql db (in Windows 7 / Ubuntu / AWS)

This blog will elaborate about Installation of Pentaho 5.0.1 CE with Postgresql db (in Windows 7 / Ubuntu / AWS)

1.Putty configuration
Step-1: Go to start menu and click putty or Desktop find where is putty.
Step-2: Just provide IP Address or host name of client machine. See the below image and provide Host name in red rectangle area.
Putty configuration

Step-3: After that go to connection tab > Data and provide username of client machine. In below image you can see and follow the steps.

Putty configuration 2

Step-4: After that browse and upload the .ppk file.In below image you can see the procedure how to go there and  provide .ppk file, and click Open button.
Putty configuration 3

2.Java Configeration
PART- I JAVA (Open – JDK)- Installation

Installation of JAVA(Open JDK) in ubntu server
NOTE : You must issue sudo(Superuser do) permission before you ready to install java
Command : sudo su
In the next line : You need to issue the password that you used for log-ing using PuTTY.

* Install Open JDK and JRE using the below commands
1) JAVA installation command.
apt-get install oracle-java7-installer

2) Find whether java installed or not
which java

3) Find which version installed
java -version
java version “1.7.0_51”
OpenJDK Runtime Environment (IcedTea 2.3.10) (7u25-2.3.10-1ubuntu0.12.04.2)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

You need NOT to set JAVA_HOME if you see the above message(when you issue java -version) for ubntu server, at the time of java installation it will set the JAVA_HOME.
This may differ from version to version for ubntu server.

By default the open JDK install in the below location

NOTE-3 ( Optional – set java_home)

Open .bashrc file using an editor. If you use VI then
vi ~/.bashrc
and add the following 2 lines in your .bashrc file.
export JAVA_HOME
3.Pentaho Bi-Server Configuration
PART- II Pentaho 5.0.1 CE installation
1) Create a folder under home
mkdir pentaho
2) Download pentaho
Issue the below command to down load pentaho zip file from sourceforge site.
wget Intelligence Server/5.0.1-stable/

3) Unzip file

i) Once the down load is completed you will be getting “”  zip file under  pentaho
ii) unzip the file using below command
NOTE: if unzip is not installed in ubuntu server issue the below command to install unzip package
sudo apt-get install unzip
4) biserver-ce  folder
i) Once unzip completed you will be getting a folder biserver-ce
ii) Do the following.
[email protected]———–#/opt/pentaho# cd biserver-ce
[email protected]———-#/opt/pentaho/biserver-ce# ls
data       pentaho-solutions  set-pentaho-env.bat  start-pentaho.bat  stop-pentaho.bat  third-party-tools
import-export.bat  licenses          promptuser.js   start-pentaho-debug.bat   tomcat
NOTE : You need to give the permissions to the .sh files to run
Issue below command : chmod -R 777

5) Start the bi server using below command

[[email protected] biserver-ce]# ./
DEBUG: _PENTAHO_JAVA_HOME=/usr/lib/jvm/jre
DEBUG: _PENTAHO_JAVA==/usr/lib/jvm/jre/bin/java
Using CATALINA_BASE:   /opt/pentaho/biserver-ce/tomcat
Using CATALINA_HOME:   /opt/pentaho/biserver-ce/tomcat
Using CATALINA_TMPDIR: /opt/pentaho/biserver-ce/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/jre
Using CLASSPATH:       /opt/biserver-ce/tomcat/bin/bootstrap.jar

NOTE: stop the server by issuing this command
[email protected] —— :/opt/pentaho/biserver-ce# ./
[email protected]:/home/pentaho/biserver-ce# ./
Using CATALINA_BASE:   /opt/pentaho/biserver-ce/tomcat
Using CATALINA_HOME:   /opt/pentaho/biserver-ce/tomcat
Using CATALINA_TMPDIR: /opt/pentaho/biserver-ce/tomcat/temp
Using JRE_HOME:        /usr/lib/jvm/jre
Using CLASSPATH:       /opt/biserver-ce/tomcat/bin/bootstrap.jar

6) Go the web-browser and give the below URL
Example :

NOTE: pentaho by default uses 8080 port number.
Note: Below process is applicable for window machine not linux machine.
If you want to change default port number then follow steps like D:\Software\biserver-ce-5.0.1-stable\biserver-ce\tomcat\conf\server.xml   Find the port no. 8080 and replace port number according to requirement and save the file and exit.

4.Pentaho Home Page
Credentials you need to supply once you get the home page are :
User name : Admin
Password : password

Installed Pentaho

7) After that click Home and go to market place and Install Plugging like according to requirement     like Community Dashboard Editor (CDE),Community Dashboard DataAccess, Community Dashboard Framework, Saiku Analytics etc.
8) And once stop the Bi-server and again restart server server.

Rohit Verma

Helical IT Solutions

Talend Open Studio (TOS) versus Pentaho Data Integrator (Kettle)

This blog will be talking about Talend Open Studio (TOS) versus Pentaho Data Integrator (Kettle)

Talend Open Studio (TOS) and Pentaho Data Integration (Kettle) are two comprehensive and widely used Open Source ETL tools.

Pentaho Kettle

  1. The company started around 2001 (2002 was when kettle was integrated into it).
  2. It has a stand-alone java engine that processes the jobs and tasks for moving data between many different databases and files.
  3. It can schedule tasks (but you need a scheduler for that – cron).
  4. It can run remote jobs on “slave servers” on other machines.
  5. It has data quality features: from its own GUI, writing more customised SQL queries, Java script and regular expressions.
  6. (Spoon) it is easy to build Data Integration procedures. The procedures can be run by Kettle runtime in different ways: Using the command line utility (Pan), a small server (Carte), a database repository (Kitchen) or directly from the IDE (Spoon). Procedures are saved in XML files and interpreted by a Java library which is required to run the ETL tasks.
  7. Kettle is an interpreter of ELT procedures saved in XML format.
  8. Kettle comes with a graphical tool which is very intuitive and helps the entire ETL process from the design to test and deployment.
  9. Kettle IDE is slightly easier to start with but also less comprehensive
  10. Kettle is more flexible on this and the ETL procedures can be built quickly.
  11. Pentaho Data Integration (Kettle) is Java (Swing) application and library. Kettle is an interpreter of procedures written in XML format. The features and components are a little less compressive than Talend ones, however this doesn’t restrict the complexity of the ETL procedures that can be implemented. Kettle provides a JavaScript engine (as well as a Java one) to fine tune the data manipulation process.
  12. Kettle is also a good tool, with everything necessary to build even complex ETL procedures.
  13. Kettle is an interpreter of ETL procedures written in XML format. Kettle provides a Java or JavaScript engine to take control of data processing.
  14. Kettle (PDI) is the default tool in Pentaho Business Intelligence Suite. The procedures can be also executed outside the Pentaho platform, provided that all the Kettle libraries and Java interpreter are installed.
  15. Kettle makes it is easy to deploy procedures in clustered environments and save them in a database table.

Talend TOS

  1. It started around October 2006
  2. It has a much smaller community then Pentaho but has 2 finance companies supporting it.
  3. It generates java or perl code which you can later run on your server.
  4. It can schedule tasks (also with using schedulers like cron).
  5. It has data quality features: from its own GUI, writing more customised SQL queries and Java.
  6. Talend uses a user friendly and comprehensive IDE (similar to Pentaho Kettle’s) to design the procedures. Procedures can be tested on the IDE and compiled in Java code. The Java generated code can be modified to achieve greater control and flexibility.
  7. Talend Open Studio is a Java code generator tool.
  8. Talend comes with a graphical tool which is very intuitive and helps the entire ETL process from the design to test and deployment.
  9. Talend Open Studio is steeper; however its flexibility and power greatly compensate the first impact.

10. Talend Open Studio requirements are to define the correct schema of the data to be processed and the IDE helps a lot on this task. Anyway metadata definition in Talend is an important feature and helps the maintainability and reliability of the procedure when deployed in production.

11. Talend Open Studio is an Eclipse based Java tool. The procedures are then compiled in Java bytecode during the deployment, this means that the entire Java ecosystem can be potentially used.

12. Components and features are numerous, mixing both general purpose tools and very specific components. Talend provides vendor specific sets of RDBMS, NoSQL, and Big Data components among generic ones; this approach enables the support to both vendor specific features and generic database features.

13. Talend the full Java ecosystem can be used and it’s easy to use vendor specific database features.

14. As a code generator tool Talend Open Studio translates procedures in compact and fast Java.

15. Talend Open Studio (TOS) is a generic ETL and Data Management tool also integrated in the SpagoBI and Jasper Server BI platforms. Procedures are compiled in small Java packages, easily deployable and run able in any Java enabled environment.



Both ETL Tools

  1. Talend and Pentaho offers some of the most deployed Open Source ETL tools, used in several mission critical implementations.
  2. Talend and Pentaho have strong community support are healthy, well known companies. Open Source Business Intelligence is growing fast and real world applications are widespread.
  3. Talend Open Studio and Pentaho Kettle are both user friendly, well documented and have a strong community support. Talend Open Studio requires more initial effort to get started however its great potential is highly appreciated from the beginning.
  4. The interpreted nature of Kettle makes it sometimes slower in some tasks compared to Talend.
  5. Talend is a single threading code generator (Java or Perl), Kettle uses a metadata driven multi-threaded engine. So it’s your choice: either debug generated Java code (Talend) or debug a graphical data flow (Kettle).
  6. Pentaho Kettle is very easy to use and a good solution in Pentaho environments. Talend is a more general propose Data Management platform that can be used in conjunction with its Talend ESB, Talend Data Quality and Talend MDM companions.
  7. Pentaho is faster (twice as fast maybe) then Talend.
  8. Talend is more a tool for people who are making already a Java program and want to save lots and lots of time with a tool that generates code for them.

Talend uses Eclipse as GUI; PDI uses SWT (which Eclipse uses). Depending on how you look at it both have advantages/disadvantages. PDI has a more different look and feel for Eclipse users, but PDI will have fewer problems with Eclipse versions/upgrades.

Vishwanth Surapraju

Helical IT Solutions

Convert the PEM file to a PPK file

This blog will teach how to convert the PEM file to a PPK file

1. Run Puttygen.

2. From the menu option “Conversions”, select “Import key”

3. In the dialog, locate the pem file and “Open” it.
PEM to PPK 2
4. If required Change the comment from ‘imported-openssh-key” to a something more descriptive like “my-db-server”
5. Optional: Enter a passphrase.
6. Create PPK file by clicking on “Save private key”


Naveen Dasari

Helical IT Solutions

Jaspersoft Report Scheduler

This blog will talk about how to use Jaspersoft Report Scheduler, its configuration etc.

1.       Report Scheduler  :  It is an automated and iterative platform to email reports to anyone in PDF,CSV,Excel,….etc format.


2.       To  send email , it should be connected to outbound email server,  so for this it should be configured accordingly

a.       Go  to this  path : C:\Jaspersoft\jasperreports-server-5.5\apache-tomcat\webapps\jasperserver-pro\WEB-INF\


You will find the file like below screenshot:

Jaspersoft Report Scheduler 1

b.Change the yellow mark values to your required input

c.Restart the Jasper Server


3. Now Go to Report Wizard and scheduled your required job or report :


Below mentioned are the steps to be followed for doing the same:

Jaspersoft Report Scheduler 2

b. After this go to “create schedule “ tab , you will find like this:

Jaspersoft Report Scheduler 3

Here you can set how frequently you want to schedule this report and for what timezone

c. Then go for the “output options” tab in this window only[in the 2nd right] Here you have to specify in what format you want to send the report

Jaspersoft Report Scheduler 4d. Then go for “notification” in this window. To whom all we want to send the reports, the same is to be specified in this window

Jaspersoft Report Scheduler 5

Now You have successfully scheduled the reports…!!!

4. If we want to stop the scheduler, then go to this location


Jaspersoft Report Scheduler 6

Remove the init-method=”start”

Restart the Jasperserver



Helical IT Solutions