【发布时间】:2019-03-13 12:22:31
【问题描述】:
我正在通过以下方式导入一个包含 3300 行数据的 .csv 文件:
myCSVfile = pd.read_csv(csv_file)
myCSVfile.to_sql(con=engine, name='foo', if_exists='replace')
成功导入后,我对表执行“select * from ...”查询,返回 3100 行,那么缺少的 200 行在哪里?
我假设存在无法读取的损坏数据,我进一步假设它会被 pandas 跳过。但是,没有任何警告、日志或消息可以明确说明。脚本正常执行。
有没有人遇到过类似的问题,还是我遗漏了一些非常明显的问题?
【问题讨论】:
-
有点不清楚你认为它失败的地方。您是否检查过从文件中读取了多少行?例如
myCSVfile.shape -
会不会是 csv 文件包含重复键?你确实使用了 if_exists='replace'。
-
如果描述含糊不清,我们深表歉意。简而言之,是的,我在流程的每个阶段都运行了多次打印以跟踪所有内容,并且数字仅在导入后有所不同,这就是为什么我认为问题出在 .to_sql 函数中。 @JohnSloper
-
@Spinor8 我也检查了重复项,是的,我发现了
-
if_exists 适用于数据库实体以及如何处理它。它可以“附加”到其他行为中。但不应为丢失行负责。
标签: mysql python-3.x pandas csv