【问题标题】:django loaddata - skip invalid rows (DataError)django loaddata - 跳过无效行(DataError)
【发布时间】:2015-11-20 15:20:13
【问题描述】:

我有一个从 sqlite db 创建的 巨大 转储文件,并尝试将其加载到 postgres db 中。

有些行无效,我想跳过它们。例如,有些对象的 char 字段限制为 1000 个字符,实际上有些行的值更长。因为他们 django 不会让我加载夹具数据(“类型字符变化的值太长(1000)”

我如何告诉 django 跳过那些无效项并加载所有其余项?

谢谢!

编辑:首选选项 - 如果我可以截断这些值而不是完全跳过对象,那就更好了。

【问题讨论】:

  • 您可以编写自己的导入脚本...

标签: django postgresql django-models django-migrations


【解决方案1】:

如果您不关心超过 1000 个字符的字符串,最简单的方法是“转储”django 转储数据并直接从 sqlite 导出。然后你可以使用 sqlite 中的substr 函数来截断不需要的数据。

要从 sqlite 导出到 CSV 文件,在 sqlite shell 中键入 .mode csv,后跟 .out 文件名,后跟查询。而不是调用 SELECT * 您需要调用 SELECT whatever, substr(whateverelse, 0, 1000,)for additional help on dumping see this question and answers

已从 sqlite 转储,您可以使用 COPY FROM 导入到 postgres 中

【讨论】:

  • 嗨 e4c5,有趣的方法。因为我很着急,所以我最终以丑陋的方式进行了操作 - 删除了长度限制,让所有内容都加载,运行一个脚本来清理太长的行,然后重新添加长度限制。无论如何谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-08
  • 2016-03-23
  • 1970-01-01
  • 2017-01-23
  • 2010-12-10
相关资源
最近更新 更多