В приведенном ниже примере содержимое файла кажется пустым после выполнения команды copy_expert, и pd.read_csv выдает ошибку, утверждая, что это пустой файл. Файл кажется пустым, даже когда я выполняю эту операцию в обратном порядке (read_csv перед copy_expert). Почему файл пуст и как я могу справиться с этим сценарием?
file = //download file from S3
copy_sql = """
COPY %s FROM stdin WITH CSV HEADER
DELIMITER as ','
"""
cursor = self.connection.cursor()
cursor.copy_expert(sql=copy_sql % table_name, file=file)
cursor.close()
df = pd.read_csv(file, dtype={// dtype value})
EDIT
Мне удалось решить эту проблему, выполнив следующие действия, однако было бы полезно понять, почему файловый объект очищается, а также есть ли более эффективный способ сделать это.
file = //download file from S3
file_clone = copy.deepcopy(file)
copy_sql = """
COPY %s FROM stdin WITH CSV HEADER
DELIMITER as ','
"""
cursor = self.connection.cursor()
cursor.copy_expert(sql=copy_sql % table_name, file=file)
cursor.close()
df = pd.read_csv(file_clone, dtype={// dtype value})