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)
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()
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)
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()