You can use the Artemis CLI to execute data maintenance tools:
The following sub-commands are available when running the CLI data command from a particular broker instance that has already been installed using the create command:
| Name | Description | 
|---|---|
| Prints a report about journal records of a non-running server | |
| exp | Export the message data using a special and independent XML format | 
| imp | Imports the journal to a running broker using the output from expt | 
| encode | shows an internal format of the journal encoded to String | 
| decode | imports the internal journal format from encode | 
| compact | Compacts the journal of a non running server | 
| recover | Recover (undelete) messages from an existing journal and create a new one. | 
You can use the CLI help for more information on how to execute each of the tools. For example:
$ ./artemis help data print
NAME
        artemis data print - Print data records information (WARNING: don't use
        while a production server is running)
SYNOPSIS
        artemis data print [--bindings <binding>] [--broker <brokerConfig>]
                [--f] [--jdbc] [--jdbc-bindings-table-name <jdbcBindings>]
                [--jdbc-connection-url <jdbcURL>]
                [--jdbc-driver-class-name <jdbcClassName>]
                [--jdbc-large-message-table-name <jdbcLargeMessages>]
                [--jdbc-message-table-name <jdbcMessages>]
                [--jdbc-node-manager-table-name <jdbcNodeManager>]
                [--jdbc-page-store-table-name <jdbcPageStore>] [--journal <journal>]
                [--large-messages <largeMessges>] [--output <output>]
                [--paging <paging>] [--reclaimed] [--safe] [--verbose] [--]
                [<configuration>]
OPTIONS
        --bindings <binding>
            The folder used for bindings (default from broker.xml)
        --broker <brokerConfig>
            This would override the broker configuration from the bootstrap
        --f
            This will allow certain tools like print-data to be performed
            ignoring any running servers. WARNING: Changing data concurrently
            with a running broker may damage your data. Be careful with this
            option.
        --jdbc
            It will activate jdbc
        --jdbc-bindings-table-name <jdbcBindings>
            Name of the jdbc bindigns table
        --jdbc-connection-url <jdbcURL>
            The connection used for the database
        --jdbc-driver-class-name <jdbcClassName>
            JDBC driver classname
        --jdbc-large-message-table-name <jdbcLargeMessages>
            Name of the large messages table
        --jdbc-message-table-name <jdbcMessages>
            Name of the jdbc messages table
        --jdbc-node-manager-table-name <jdbcNodeManager>
            Name of the jdbc node manager table
        --jdbc-page-store-table-name <jdbcPageStore>
            Name of the page store messages table
        --journal <journal>
            The folder used for messages journal (default from broker.xml)
        --large-messages <largeMessges>
            The folder used for large-messages (default from broker.xml)
        --output <output>
            Output name for the file
        --paging <paging>
            The folder used for paging (default from broker.xml)
        --reclaimed
            This option will try to print as many records as possible from
            reclaimed files
        --safe
            It will print your data structure without showing your data
        --verbose
            Adds more information on the execution
        --
            This option can be used to separate command-line options from the
            list of argument, (useful when arguments might be mistaken for
            command-line options
        <configuration>
            Broker Configuration URI, default
            'xml:${ARTEMIS_INSTANCE}/etc/bootstrap.xml'For a full list of data tools commands available use:
$ ./artemis help data
NAME
        artemis data - data tools group
        (print|imp|exp|encode|decode|compact|recover) (example ./artemis data
        print)
SYNOPSIS
        artemis data
        artemis data compact [--journal <journal>]
                [--large-messages <largeMessges>] [--paging <paging>]
                [--broker <brokerConfig>] [--bindings <binding>] [--verbose]
        artemis data decode [--journal <journal>]
                [--large-messages <largeMessges>] [--file-size <size>]
                [--paging <paging>] [--prefix <prefix>] [--suffix <suffix>]
                [--broker <brokerConfig>] [--directory <directory>]
                [--bindings <binding>] [--verbose] --input <input>
        artemis data encode [--journal <journal>]
                [--large-messages <largeMessges>] [--file-size <size>]
                [--paging <paging>] [--prefix <prefix>] [--suffix <suffix>]
                [--broker <brokerConfig>] [--bindings <binding>] [--verbose]
                [--directory <directory>]
        artemis data exp [--jdbc-driver-class-name <jdbcClassName>]
                [--journal <journal>] [--jdbc-connection-url <jdbcURL>]
                [--large-messages <largeMessges>]
                [--jdbc-bindings-table-name <jdbcBindings>] [--paging <paging>] [--f]
                [--jdbc-large-message-table-name <jdbcLargeMessages>]
                [--broker <brokerConfig>] [--jdbc-page-store-table-name <jdbcPageStore>]
                [--bindings <binding>] [--jdbc] [--verbose]
                [--jdbc-message-table-name <jdbcMessages>]
                [--jdbc-node-manager-table-name <jdbcNodeManager>] [--output <output>]
        artemis data imp [--legacy-prefixes] [--password <password>]
                [--transaction] [--verbose] [--port <port>] [--user <user>] [--sort]
                --input <input> [--host <host>]
        artemis data print [--reclaimed]
                [--jdbc-driver-class-name <jdbcClassName>] [--journal <journal>]
                [--jdbc-connection-url <jdbcURL>] [--large-messages <largeMessges>]
                [--jdbc-bindings-table-name <jdbcBindings>] [--paging <paging>] [--f]
                [--jdbc-large-message-table-name <jdbcLargeMessages>] [--safe]
                [--broker <brokerConfig>] [--jdbc-page-store-table-name <jdbcPageStore>]
                [--bindings <binding>] [--jdbc] [--verbose]
                [--jdbc-message-table-name <jdbcMessages>]
                [--jdbc-node-manager-table-name <jdbcNodeManager>] [--output <output>]
        artemis data recover [--jdbc-driver-class-name <jdbcClassName>]
                [--journal <journal>] [--jdbc-connection-url <jdbcURL>]
                [--large-messages <largeMessges>] [--reclaimed] --target <outputJournal>
                [--jdbc-bindings-table-name <jdbcBindings>] [--paging <paging>] [--f]
                [--jdbc-large-message-table-name <jdbcLargeMessages>]
                [--broker <brokerConfig>] [--jdbc-page-store-table-name <jdbcPageStore>]
                [--bindings <binding>] [--jdbc] [--verbose]
                [--jdbc-message-table-name <jdbcMessages>]
                [--jdbc-node-manager-table-name <jdbcNodeManager>] [--output <output>]
COMMANDS
        With no arguments, Display help information
        recover
            Recover (undelete) every message on the journal by creating a new
            output journal. Rolled backed and acked messages will be sent out to
            the output as much as possible.
            With --jdbc-driver-class-name option, JDBC driver classname
            With --journal option, The folder used for messages journal (default
            from broker.xml)
            With --jdbc-connection-url option, The connection used for the
            database
            With --large-messages option, The folder used for large-messages
            (default from broker.xml)
            With --reclaimed option, This option will try to recover as many
            records as possible from reclaimed files
            With --target option, Output folder container the new journal with
            all the generated messages
            With --jdbc-bindings-table-name option, Name of the jdbc bindigns
            table
            With --paging option, The folder used for paging (default from
            broker.xml)
            With --f option, This will allow certain tools like print-data to be
            performed ignoring any running servers. WARNING: Changing data
            concurrently with a running broker may damage your data. Be careful
            with this option.
            With --jdbc-large-message-table-name option, Name of the large
            messages table
            With --broker option, This would override the broker configuration
            from the bootstrap
            With --jdbc-page-store-table-name option, Name of the page store
            messages table
            With --bindings option, The folder used for bindings (default from
            broker.xml)
            With --jdbc option, It will activate jdbc
            With --verbose option, Adds more information on the execution
            With --jdbc-message-table-name option, Name of the jdbc messages
            table
            With --jdbc-node-manager-table-name option, Name of the jdbc node
            manager table
            With --output option, Output name for the file
        print
            Print data records information (WARNING: don't use while a
            production server is running)
            With --reclaimed option, This option will try to print as many
            records as possible from reclaimed files
            With --jdbc-driver-class-name option, JDBC driver classname
            With --journal option, The folder used for messages journal (default
            from broker.xml)
            With --jdbc-connection-url option, The connection used for the
            database
            With --large-messages option, The folder used for large-messages
            (default from broker.xml)
            With --jdbc-bindings-table-name option, Name of the jdbc bindigns
            table
            With --paging option, The folder used for paging (default from
            broker.xml)
            With --f option, This will allow certain tools like print-data to be
            performed ignoring any running servers. WARNING: Changing data
            concurrently with a running broker may damage your data. Be careful
            with this option.
            With --jdbc-large-message-table-name option, Name of the large
            messages table
            With --safe option, It will print your data structure without
            showing your data
            With --broker option, This would override the broker configuration
            from the bootstrap
            With --jdbc-page-store-table-name option, Name of the page store
            messages table
            With --bindings option, The folder used for bindings (default from
            broker.xml)
            With --jdbc option, It will activate jdbc
            With --verbose option, Adds more information on the execution
            With --jdbc-message-table-name option, Name of the jdbc messages
            table
            With --jdbc-node-manager-table-name option, Name of the jdbc node
            manager table
            With --output option, Output name for the file
        exp
            Export all message-data using an XML that could be interpreted by
            any system.
            With --jdbc-driver-class-name option, JDBC driver classname
            With --journal option, The folder used for messages journal (default
            from broker.xml)
            With --jdbc-connection-url option, The connection used for the
            database
            With --large-messages option, The folder used for large-messages
            (default from broker.xml)
            With --jdbc-bindings-table-name option, Name of the jdbc bindigns
            table
            With --paging option, The folder used for paging (default from
            broker.xml)
            With --f option, This will allow certain tools like print-data to be
            performed ignoring any running servers. WARNING: Changing data
            concurrently with a running broker may damage your data. Be careful
            with this option.
            With --jdbc-large-message-table-name option, Name of the large
            messages table
            With --broker option, This would override the broker configuration
            from the bootstrap
            With --jdbc-page-store-table-name option, Name of the page store
            messages table
            With --bindings option, The folder used for bindings (default from
            broker.xml)
            With --jdbc option, It will activate jdbc
            With --verbose option, Adds more information on the execution
            With --jdbc-message-table-name option, Name of the jdbc messages
            table
            With --jdbc-node-manager-table-name option, Name of the jdbc node
            manager table
            With --output option, Output name for the file
        imp
            Import all message-data using an XML that could be interpreted by
            any system.
            With --legacy-prefixes option, Do not remove prefixes from legacy
            imports
            With --password option, User name used to import the data. (default
            null)
            With --transaction option, If this is set to true you will need a
            whole transaction to commit at the end. (default false)
            With --verbose option, Adds more information on the execution
            With --port option, The port used to import the data (default 61616)
            With --user option, User name used to import the data. (default
            null)
            With --sort option, Sort the messages from the input (used for older
            versions that won't sort messages)
            With --input option, The input file name (default=exp.dmp)
            With --host option, The host used to import the data (default
            localhost)
        decode
            Decode a journal's internal format into a new journal set of files
            With --journal option, The folder used for messages journal (default
            from broker.xml)
            With --large-messages option, The folder used for large-messages
            (default from broker.xml)
            With --file-size option, The journal size (default 10485760)
            With --paging option, The folder used for paging (default from
            broker.xml)
            With --prefix option, The journal prefix (default activemq-data)
            With --suffix option, The journal suffix (default amq)
            With --broker option, This would override the broker configuration
            from the bootstrap
            With --directory option, The journal folder (default journal folder
            from broker.xml)
            With --bindings option, The folder used for bindings (default from
            broker.xml)
            With --verbose option, Adds more information on the execution
            With --input option, The input file name (default=exp.dmp)
        encode
            Encode a set of journal files into an internal encoded data format
            With --journal option, The folder used for messages journal (default
            from broker.xml)
            With --large-messages option, The folder used for large-messages
            (default from broker.xml)
            With --file-size option, The journal size (default 10485760)
            With --paging option, The folder used for paging (default from
            broker.xml)
            With --prefix option, The journal prefix (default activemq-data)
            With --suffix option, The journal suffix (default amq)
            With --broker option, This would override the broker configuration
            from the bootstrap
            With --bindings option, The folder used for bindings (default from
            broker.xml)
            With --verbose option, Adds more information on the execution
            With --directory option, The journal folder (default the journal
            folder from broker.xml)
        compact
            Compacts the journal of a non running server
            With --journal option, The folder used for messages journal (default
            from broker.xml)
            With --large-messages option, The folder used for large-messages
            (default from broker.xml)
            With --paging option, The folder used for paging (default from
            broker.xml)
            With --broker option, This would override the broker configuration
            from the bootstrap
            With --bindings option, The folder used for bindings (default from
            broker.xml)
            With --verbose option, Adds more information on the execution