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