progressbar for inserts/upserts of all fileformats, closes #485

This commit is contained in:
Mischa Untaga 2022-09-08 16:56:52 +02:00
commit 5fd78e27d2
2 changed files with 31 additions and 26 deletions

View file

@ -953,6 +953,7 @@ def insert_upsert_implementation(
decoded = io.TextIOWrapper(file, encoding=encoding) decoded = io.TextIOWrapper(file, encoding=encoding)
tracker = None tracker = None
with file_progress(decoded, silent=silent) as decoded:
if csv or tsv: if csv or tsv:
if sniff: if sniff:
# Read first 2048 bytes and use that to detect # Read first 2048 bytes and use that to detect
@ -960,7 +961,6 @@ def insert_upsert_implementation(
dialect = csv_std.Sniffer().sniff(first_bytes.decode(encoding, "ignore")) dialect = csv_std.Sniffer().sniff(first_bytes.decode(encoding, "ignore"))
else: else:
dialect = "excel-tab" if tsv else "excel" dialect = "excel-tab" if tsv else "excel"
with file_progress(decoded, silent=silent) as decoded:
csv_reader_args = {"dialect": dialect} csv_reader_args = {"dialect": dialect}
if delimiter: if delimiter:
csv_reader_args["delimiter"] = delimiter csv_reader_args["delimiter"] = delimiter

View file

@ -155,6 +155,11 @@ class UpdateWrapper:
self._update(len(line)) self._update(len(line))
yield line yield line
def read(self, size=-1):
data = self._wrapped.read(size)
self._update(len(data))
return data
@contextlib.contextmanager @contextlib.contextmanager
def file_progress(file, silent=False, **kwargs): def file_progress(file, silent=False, **kwargs):