4

我希望使用这里描述的夹具加载初始数据

https://docs.djangoproject.com/en/dev/howto/initial-data/

使用小数据集就很容易了。但是我希望加载一个不适合内存的大型 CSV。我将如何将其序列化为大型 JSON 格式?我是否必须通过手动编写开头'['和关闭']'来破解它,还是有更清洁的方法?

4

2 回答 2

0

看到您从 CSV 文件开始,您可以创建自定义命令。您可以读取 CSV 文件、创建对象并将它们保存到命令中的数据库中。只要您可以在循环中处理 CSV 的每一行,您就不会遇到内存问题。

相关文档可以在这里找到:

http://docs.python.org/2/library/csv.html https://docs.djangoproject.com/en/dev/howto/custom-management-commands/

于 2013-05-22T15:51:41.783 回答
0

我意识到这已经很老了,但我也遇到了同样的问题。

使用这篇文章作为参考:

使用 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

于 2021-05-21T17:47:08.330 回答