Example #1
0
def __do_split(args, sql_dump_file, order):
    with _Dumper() as dumper:
        counter = 0
        previous_table = None
        dumper.new_output('0000_prologue.sql')
        table_name = None
        epilogue = False
        data_handler = None

        for line in sql_dump_file:
            if data_handler:
                if line == _END_COPY_LINE:
                    data_handler.flush_data(dumper)
                    data_handler = None
                    previous_table = table_name
                    counter = 0
                else:
                    data_handler.add_line(line)
            else:  # not data_handler.is_data
                if epilogue or line in ('\n', '--\n'):
                    dumper.append(line)
                elif re.match(CONSTRAINT_COMMENT_RE, line):
                    backup = dumper.pop_last_lines(2)
                    dumper.flush()
                    dumper.new_output('zzzz_epilogue.sql')
                    dumper.add_lines(backup)
                    dumper.append(line)
                    epilogue = True
                else:
                    matcher = re.match(DATA_COMMENT_RE, line)
                    if matcher:
                        table_name = '{schema}.{table}'.format(
                            schema=matcher.groupdict()['schema'],
                            table=matcher.groupdict()['table'])
                        counter = importer.get_order_number(
                            order, table_name, previous_table)

                        backup = dumper.pop_last_lines(2)
                        dumper.flush()
                        dumper.new_output('{counter}_{table_name}.sql'.format(
                            counter=counter, table_name=table_name))
                        dumper.add_lines(backup)
                        dumper.append(line)
                    elif table_name and COPY_RE.match(line):
                        data_handler = _DataHandler(args.chunk_size, line,
                                                    table_name, counter)
                    else:
                        dumper.append(line)
Example #2
0
def __do_split(args, sql_dump_file, order):
    with _Dumper() as dumper:
        counter = 0
        previous_table = None
        dumper.new_output('0000_prologue.sql')
        table_name = None
        epilogue = False
        data_handler = None

        for line in sql_dump_file:
            if epilogue:
                dumper.append(line)
            if TABLE_STRUCTURE_RE.match(line):
                previous_table = table_name
                table_name = TABLE_STRUCTURE_RE.match(
                    line).groupdict()['table']
                counter = importer.get_order_number(order, table_name,
                                                    previous_table)

                backup = dumper.pop_last_lines(2)
                dumper.flush()
                dumper.new_output('{counter}_{table_name}.sql'.format(
                    counter=counter, table_name=table_name))
                dumper.add_lines(backup)
                dumper.append(line)
            elif INSERT_INTO_RE.match(line):
                re_dict = INSERT_INTO_RE.match(line).groupdict()
                start_line = re_dict['insert_into'] + '\n'
                data = re_dict['data']
                if not data_handler:
                    data_handler = _DataHandler(args.chunk_size, start_line,
                                                table_name, counter)
                data_handler.add_line(data)
            elif data_handler and line == '\n':
                pass
            elif data_handler:
                data_handler.flush_data(dumper)
                data_handler = None
            else:
                dumper.append(line)
        #foreach line

        if data_handler:
            data_handler.flush_data(dumper)
            data_handler = None

        dumper.flush()
Example #3
0
def __do_split(args, sql_dump_file, order):
    with _Dumper() as dumper:
        counter = 0
        previous_table = None
        dumper.new_output('0000_prologue.sql')
        table_name = None
        epilogue = False
        data_handler = None

        for line in sql_dump_file:
            if data_handler:
                if line == _END_COPY_LINE:
                    data_handler.flush_data(dumper)
                    data_handler = None
                    previous_table = table_name
                    counter = 0
                else:
                    data_handler.add_line(line)
            else:  # not data_handler.is_data
                if epilogue or line in ('\n', '--\n'):
                    dumper.append(line)
                elif re.match(CONSTRAINT_COMMENT_RE, line):
                    backup = dumper.pop_last_lines(2)
                    dumper.flush()
                    dumper.new_output('zzzz_epilogue.sql')
                    dumper.add_lines(backup)
                    dumper.append(line)
                    epilogue = True
                else:
                    matcher = re.match(DATA_COMMENT_RE, line)
                    if matcher:
                        table_name = '{schema}.{table}'.format(
                            schema=matcher.groupdict()['schema'], table=matcher.groupdict()['table'])
                        counter = importer.get_order_number(order, table_name, previous_table)

                        backup = dumper.pop_last_lines(2)
                        dumper.flush()
                        dumper.new_output('{counter}_{table_name}.sql'.format(
                            counter=counter, table_name=table_name))
                        dumper.add_lines(backup)
                        dumper.append(line)
                    elif table_name and COPY_RE.match(line):
                        data_handler = _DataHandler(args.chunk_size, line, table_name, counter)
                    else:
                        dumper.append(line)
Example #4
0
def __do_split(args, sql_dump_file, order):
    with _Dumper() as dumper:
        counter = 0
        previous_table = None
        dumper.new_output('0000_prologue.sql')
        table_name = None
        epilogue = False
        data_handler = None

        for line in sql_dump_file:
            if epilogue:
                dumper.append(line)
            if TABLE_STRUCTURE_RE.match(line):
                previous_table = table_name
                table_name = TABLE_STRUCTURE_RE.match(line).groupdict()['table']
                counter = importer.get_order_number(order, table_name, previous_table)

                backup = dumper.pop_last_lines(2)
                dumper.flush()
                dumper.new_output('{counter}_{table_name}.sql'.format(
                    counter=counter, table_name=table_name))
                dumper.add_lines(backup)
                dumper.append(line)
            elif INSERT_INTO_RE.match(line):
                re_dict = INSERT_INTO_RE.match(line).groupdict()
                start_line = re_dict['insert_into'] + '\n'
                data = re_dict['data']
                if not data_handler:
                    data_handler = _DataHandler(args.chunk_size, start_line, table_name, counter)
                data_handler.add_line(data)
            elif data_handler and line == '\n':
                pass
            elif data_handler:
                data_handler.flush_data(dumper)
                data_handler = None
            else:
                dumper.append(line)
        #foreach line

        if data_handler:
            data_handler.flush_data(dumper)
            data_handler = None

        dumper.flush()