gpt4 book ai didi

python - 如何在不将整个文件加载到内存的情况下更改大型(60gig)csv 文件的列名?

转载 作者:搜寻专家 更新时间:2023-10-30 22:05:35 24 4
gpt4 key购买 nike

我正在尝试将来自华盛顿邮报的阿片类药物数据(一个 60 gig csv)加载到 MySQl 中。问题是第一个列标题是空白的(该列中的行有数字,只是没有标题),当我尝试使用表数据导入向导加载它时,MySQl 在 MySQL 中给我一个错误。

Starting...
Prepare Import...
Prepare Import done
Import data file....

Traceback (most recent call last):
File "/usr/share/mysql-workbench/libraries/workbench/wizard_progress_page_widget.py", line 192, in thread_work
self.func()
File "/usr/lib/mysql-workbench/modules/sqlide_power_import_wizard.py", line 125, in start_import
retval = self.module.start(self.stop)
File "/usr/lib/mysql-workbench/modules/sqlide_power_import_export_be.py", line 271, in start
ret = self.start_import()
File "/usr/lib/mysql-workbench/modules/sqlide_power_import_export_be.py", line 408, in start_import
if not self.prepare_new_table():
File "/usr/lib/mysql-workbench/modules/sqlide_power_import_export_be.py", line 237, in prepare_new_table
self._editor.executeManagementCommand(""" CREATE TABLE %s (%s)""" % (self._table_w_prefix, ", ".join(["`%s` %s" % (col['name'], col["type"]) for col in self._mapping])), 1)
DBError: ("Incorrect column name ''", 1166)
ERROR: Import data file: ("Incorrect column name ''", 1166)
Failed

正如您在底部看到的,错误是''的列名称不正确,即空列标题。但由于我无法将整个 60gig csv 加载到内存中,因此我无法更改列名。

我想要的是能够编辑第一列,使其具有诸如“索引”或“#”之类的名称。任何让 MySQL 停止拒绝它的东西。

我主要使用 python,所以如果有人能给我一种在 python 中更改该列名称的方法,我将非常感激。这是我每隔几周就会回来解决的一个问题,但到目前为止还没有取得任何成功。无论你能给我什么帮助都会很棒。

我不记得我试过什么了。我在这里搜索并尝试了一些东西,但我找不到完全符合我的问题的解决方案。

我想要的只是更改第一列的名称,这样当我将它加载到 MySQl 中时,就不会出现该错误。

最佳答案

打开文件;阅读第一行;修改它;将其写入新文件;然后一次读取其余的行并将它们写入新文件。

with open('old.csv') as f, open('new.csv', 'w') as g:
hdr = next(f)
hdr = 'idx' + hdr
g.write(hdr)
for line in f:
g.write(line)

关于python - 如何在不将整个文件加载到内存的情况下更改大型(60gig)csv 文件的列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57734720/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com