public boolean runDataLoading() {
        long ctime = 0;
        System.out.println("-----------------------------");
        System.out.println("----- DATA LOADING TEST -----");
        System.out.println("-----------------------------");

        if (!this.createDB("dbtest")) {
            System.out.println("Creating database (FAILED)");
            return false;
        }
        System.out.println("Creating database (OK)");

        if (!this.openDB("dbtest")) {
            System.out.println("Opening database (FAILED)");
            return false;
        }
        System.out.println("Opening database (OK)");

        if (!this.openTransaction()) {
            System.out.println("Opening transaction (FAILED)");
            return false;
        }
        System.out.println("Opening transaction (OK)");


        System.out.println("Loading social network data from " + this.data_filename);

        ctime = System.nanoTime()/1000;

        gdreader = new GDReader(this);
        if (!gdreader.readFile(data_filename)) {
            System.out.println("Data loading (FAILED)");
            return false;
        } else {
            System.out.println("- Person nodes read: " + gdreader.getPeopleCounter());
            System.out.println("- Webpage nodes read: " + gdreader.getWebpagesCounter());
            System.out.println("- Friend edges read: " + gdreader.getFriendsCounter());
            System.out.println("- Like edges read: " + gdreader.getLikesCounter());
            System.out.println("- Total nodes read: " + gdreader.getNodesCounter());
            System.out.println("- Total edges read: " + gdreader.getEdgesCounter());
        }

        data_time = System.nanoTime()/1000 - ctime;
        this.nodes_counter = this.getNumberOfNodes();
        this.edges_counter = this.getNumberOfEdges();

        System.out.println("Data Loading (OK)");
        System.out.println("Number of nodes inserted: " + this.nodes_counter);
        System.out.println("Number of edges inserted: " + this.edges_counter);
        System.out.println("Total time: " + this.data_time + " us");

        if (!this.closeTransaction()) {
            System.out.println("Closing transaction (FAILED)");
            return false;
        }
        System.out.println("Closing transaction (OK)");

        if (!this.closeDB()) {
            System.out.println("Closing database (FAILED)");
            return false;
        }
        System.out.println("Closing database (OK)");

        if (this.makeDataLoadingReport()) {
            System.out.println("Making report (OK)");
        } else {
            System.out.println("Making report (FAILED)");
        }
        System.out.println("The report is available in " + this.data_loading_report_filename);

        return true;
    }