in oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBExport.java [74:159]
public static void main(String[] args) throws ClassNotFoundException, SQLException, IOException {
String url = null, user = null, pw = null, table = "nodes", query = null, dumpfile = null, lobdir = null;
List<String> fieldList = Collections.emptyList();
Format format = Format.JSON;
PrintStream out = System.out;
RDBDocumentSerializer ser = new RDBDocumentSerializer(new MemoryDocumentStore());
String columns = null;
String param = null;
try {
for (int i = 0; i < args.length; i++) {
param = args[i];
if ("-u".equals(param) || "--username".equals(param)) {
user = args[++i];
} else if ("-p".equals(param) || "--password".equals(param)) {
pw = args[++i];
} else if ("-c".equals(param) || "--collection".equals(param)) {
table = args[++i];
} else if ("-j".equals(param) || "--jdbc-url".equals(param)) {
url = args[++i];
} else if ("-q".equals(param) || "--query".equals(param)) {
query = args[++i];
} else if ("-o".equals(param) || "--out".equals(param)) {
OutputStream os = new FileOutputStream(args[++i]);
out = new PrintStream(os, true, StandardCharsets.UTF_8);
} else if ("--from-db2-dump".equals(param)) {
dumpfile = args[++i];
} else if ("--lobdir".equals(param)) {
lobdir = args[++i];
} else if ("--jsonArray".equals(param)) {
format = Format.JSONARRAY;
} else if ("--csv".equals(param)) {
format = Format.CSV;
} else if ("--columns".equals(param)) {
columns = args[++i];
} else if ("--fields".equals(param)) {
String fields = args[++i];
fieldList = Arrays.asList(fields.split(","));
} else if ("--version".equals(param)) {
System.out.println(RDBExport.class.getName() + " version " + getModuleVersion());
System.exit(0);
} else if ("--help".equals(param)) {
printHelp();
System.exit(0);
} else {
System.err.println(RDBExport.class.getName() + ": invalid parameter " + args[i]);
printUsage();
System.exit(2);
}
}
} catch (IndexOutOfBoundsException ex) {
System.err.println(RDBExport.class.getName() + ": value missing for parameter " + param);
printUsage();
System.exit(2);
}
if (format == Format.CSV && fieldList.isEmpty()) {
System.err.println(RDBExport.class.getName() + ": csv output requires specification of field list");
System.exit(2);
}
// JSON output with fieldList missing "_id"
if ((format == Format.JSON || format == Format.JSONARRAY) && !fieldList.isEmpty() && !fieldList.contains("_id")) {
fieldList = new ArrayList<String>(fieldList);
fieldList.add(0, "_id");
}
if (dumpfile == null && url == null) {
System.err.println(RDBExport.class.getName() + ": must use either dump file or JDBC URL");
printUsage();
System.exit(2);
} else if (dumpfile != null) {
columns = (columns == null) ? "id, modified, hasbinary, deletedonce, cmodcount, modcount, dsize, data, bdata" : columns;
List<String> columnList = Arrays.asList(columns.toLowerCase(Locale.ENGLISH).replace(" ", "").split(","));
dumpFile(dumpfile, lobdir, format, out, fieldList, columnList, ser);
} else {
if (columns != null) {
System.err.println(RDBExport.class.getName() + ": column names ignored when using JDBC");
}
dumpJDBC(url, user, pw, table, query, format, out, fieldList, ser);
}
out.flush();
out.close();
}