##### Page tree

These classes provide solutions for importing/exporting structures into/from JChem database tables.

## Importer

Structure files can be imported into the database using chemaxon.jchem.db.importer.
Java example:

        Importer importer = new Importer();

importer.setConnectionHandler(connHandler);
importer.setInput(fileName);
importer.setTableName(tableName);
importer.setLinesToCheck(numOfLines);
importer.setHaltOnError(false);
importer.setDuplicatesAllowed(true);

System.out.println("Collecting file information ...");
importer.init();
System.out.println("Done.");

// Skip "offset" number of structures from the beginning of file
System.out.println("Skipping " + offset + " structures ...");
importer.skip(offset);
System.out.println("Done.");

// Perform importing
System.out.println("Importing structures from " + filename + " ...");
int imported = importer.importMols();
System.out.println("Done.");
System.out.println("Imported " + imported + " structures");


Note: For the sake of readability, try/catch is omitted in this example.

### Using an InputSream object as data source

You may also use InputStream instead of File in the constructor of Importer. The only possible drawback may be that a given number of lines (linesToCheck parameter in the example) will be buffered in memory in that case, so this value shouldn't be excessively high.

## Exporter

With the use of chemaxon.jchem.db.exporter, structure table data can be exported into files or any OutputStream objects.
Java example:

        int format = Transfer.SMILES;
OutputStream os = new FileOutputStream(new File(fileName));
Exporter ex=new Exporter();
ex.setConnectionHandler(connHandler);
ex.setTableName(tableName);
ex.setFieldList(fieldString);
ex.setOutputStream(os);
ex.setFormat(format);
ex.setDefaults(true);               // only exporting default fields

System.out.println("Exporting structures into " + fileName + " ...");
int written = ex.writeAll();       // writing file in one step
System.out.println(written+" molecules were exported.");


Molecules can be written one-by-one, by changing the end of the code to the following:

        int count=0;
while (ex.writeNext()) {
count++;
System.out.println("Molecule number " + count + " exported.");
}


Note: For the sake of readability, try/catch is omitted in this example.

### Custom select statement

Use Exporter.setSelectStatement()  to specify a custom select statement as the basis of the export. This enables

• exporting related data from other tables together with the structures
• ordering the structures with an ORDER BY clause