Don't require the `--structure` argument.
UInt8 version = 0;
        writeBinary(version, model_out);
        writeBinary(source_rows, model_out);
        
        Names data_types = header.getDataTypeNames();
        size_t header_size = data_types.size();
        writeBinary(header_size, model_out);
        for (const auto & type : data_types)
            writeBinary(type, model_out);
        
        obfuscator.serialize(model_out);
        model_out.finalize();
        model_file_out.finalize();
    }
    if (!options.count("limit"))
        limit = source_rows;
    
    UInt64 processed_rows = 0;
    while (processed_rows < limit)
    {
        if (!silent)
            std::cerr << "Generating data\n";
        if (rewind_needed)
            file_in.rewind();
        Pipe pipe(context->getInputFormat(input_format, file_in, header, max_block_size));
        if (processed_rows + source_rows > limit)
        {
            pipe.addSimpleTransform([&](const Block & cur_header)
            {
                return std::make_shared<LimitTransform>(cur_header, limit - processed_rows, 0);