我希望使用这里描述的夹具加载初始数据
https://docs.djangoproject.com/en/dev/howto/initial-data/
使用小数据集就很容易了。但是我希望加载一个不适合内存的大型 CSV。我将如何将其序列化为大型 JSON 格式?我是否必须通过手动编写开头'['和关闭']'来破解它,还是有更清洁的方法?
我希望使用这里描述的夹具加载初始数据
https://docs.djangoproject.com/en/dev/howto/initial-data/
使用小数据集就很容易了。但是我希望加载一个不适合内存的大型 CSV。我将如何将其序列化为大型 JSON 格式?我是否必须通过手动编写开头'['和关闭']'来破解它,还是有更清洁的方法?
看到您从 CSV 文件开始,您可以创建自定义命令。您可以读取 CSV 文件、创建对象并将它们保存到命令中的数据库中。只要您可以在循环中处理 CSV 的每一行,您就不会遇到内存问题。
相关文档可以在这里找到:
http://docs.python.org/2/library/csv.html https://docs.djangoproject.com/en/dev/howto/custom-management-commands/
我意识到这已经很老了,但我也遇到了同样的问题。
使用这篇文章作为参考:
使用 jq 如何将一个非常大的 JSON 文件拆分为多个文件,每个文件都有特定数量的对象?
我将原始的大型 json 对象数组拆分为单个对象,每个文件一个,如下所示:
jq -c '.[]' fixtures/counts_20210517.json | \
awk '{print > "fixtures/counts_split/doc00" NR ".json";}'
然后遍历文件,在开头和结尾添加一个方括号,并在该文件上调用 manage.py loaddata
for file in fixtures/counts_split/*json; do
echo "loading ${file}"
sed -i '1s/^/[/' $file
sed -i '1s/$/]/' $file
manage.py loaddata $file
done