- while place_threads > 0:
- for key, _ in sel.select(1):
- conn = key.data
- sel.unregister(conn)
- try:
- conn.wait()
- except Exception as exc: # pylint: disable=broad-except
- LOG.info('Wrong SQL statement: %s', exc)
- conn.close()
- place_threads -= 1
-
-def add_tiger_data(dsn, data_dir, threads, config, sqllib_dir):
- """ Import tiger data from directory or tar file
+ self.files = [i for i in self.tar_handle.getmembers() if i.name.endswith('.csv')]
+ LOG.warning("Found %d CSV files in tarfile with path %s", len(self.files), data_dir)
+ else:
+ files = os.listdir(data_dir)
+ self.files = [os.path.join(data_dir, i) for i in files if i.endswith('.csv')]
+ LOG.warning("Found %d CSV files in path %s", len(self.files), data_dir)
+
+ if not self.files:
+ LOG.warning("Tiger data import selected but no files found at %s", data_dir)
+
+
+ def __enter__(self):
+ return self
+
+
+ def __exit__(self, exc_type, exc_val, exc_tb):
+ if self.tar_handle:
+ self.tar_handle.close()
+ self.tar_handle = None
+
+
+ def next_file(self):
+ """ Return a file handle to the next file to be processed.
+ Raises an IndexError if there is no file left.
+ """
+ fname = self.files.pop(0)
+
+ if self.tar_handle is not None:
+ return io.TextIOWrapper(self.tar_handle.extractfile(fname))
+
+ return open(fname, encoding='utf-8')
+
+
+ def __len__(self):
+ return len(self.files)
+
+
+def handle_threaded_sql_statements(pool, fd, analyzer):
+ """ Handles sql statement with multiplexing