Import Product custom

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="TQ_Migration" setup_version="1.1.0">
        <sequence>
            <module name="Magento_CatalogImportExport"/>
        </sequence>
    </module>
</config>
namespace TQ\Migration\Model\Import\Product;
class Product extends \Magento\CatalogImportExport\Model\Import\Product
{
    protected function _saveProducts() {
        //TODO
    }
}
namespace TTV\Migration\Model\Import\Product;

class CategoryPro cessor extends \Magento\CatalogImportExport\Model\Import\Product\CategoryProcessor
{
    protected function createCategory($name, $parentId) {
       //TODO
    }
}

Cron

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
    <group id="tq_product_import">
        <job name="tq_product_import" instance="TQ\ProductImportExport\Model\Import\Cron" method="execute">
            <config_path>tq_product_import/settings/cron_expr</config_path>
        </job>
    </group>
</config>

namespace TQ\Migration\Model\Import;

class Cron
{
    /**
     * @var \Magento\ImportExport\Model\Import
     */
    protected $import;</pre>
<pre>  /**
     * Execute the job
     *
     * @throws \Exception
  */
   public function execute() {
      //ToDo
   }</pre>
<pre>} 

or command

namespace TQ\Migration\Console\Command;
class ImportCommand extends Command
{
    /**
     * @var \Magento\Framework\ObjectManagerInterface
     */
    private $objectManager;

    /**
     * @var \Magento\Framework\App\State
     */
    private $state;

    /**
     * @param \Magento\Framework\ObjectManagerInterface $objectManager
     * @param \Magento\Framework\App\State $state
     */
    public function __construct(
        \Magento\Framework\ObjectManagerInterface $objectManager,
        \Magento\Framework\App\State $state
    ) {
        $this->objectManager = $objectManager;
        $this->state         = $state;
        parent::__construct();
    }

    /**
     * {@inheritdoc}
     */
    protected function configure()
    {
        $this->setName('data:import')
            ->setDescription('Import catalog')
            ->addArgument('filename', InputArgument::REQUIRED, "CSV file path")
            ->addOption('entity', 'e', InputOption::VALUE_OPTIONAL, 'Import entity type')
            ->addOption('images_path', "i", InputOption::VALUE_OPTIONAL, "Images path")
            ->addOption('behavior', "b", InputOption::VALUE_OPTIONAL, "Behavior");
        parent::configure();
    }

    /**
     * {@inheritdoc}
     */
    protected function execute(InputInterface $input, OutputInterface $output) {
        //TODO
    }

import.xml

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_ImportExport:etc/import.xsd">
    <entity name="tq_customer" label="TQ Customers Import" model="TQ\Migration\Model\Import\Customer" behaviorModel="Magento\ImportExport\Model\Source\Import\Behavior\Custom" />
    <relatedIndexer entity="tq_customer" name="customer_grid" />
    <entity name="ttv_product" label="TQ Product Import" model="TQ\Migration\Model\Import\Product" behaviorModel="Magento\ImportExport\Model\Source\Import\Behavior\Custom" />
    <relatedIndexer entity="tq_product" name="product_grid" />
</config>