Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在加载大量初始数据时出现内存错误_Database_Django_Memory_Data Migration - Fatal编程技术网

Database 在加载大量初始数据时出现内存错误

Database 在加载大量初始数据时出现内存错误,database,django,memory,data-migration,Database,Django,Memory,Data Migration,我有来自旧数据库的初始数据,大约需要6GB。我可以“转储数据”我的旧数据库没有任何问题。但是当我试图将它们恢复到新数据库时,我得到了MemoryError: python manage.py loaddata fixtures/initial_data.json MemoryError: Problem installing fixture 'fixtures/initial_data.json': 有没有办法使loaddata与块一起工作,或者可以加载那个大文件?对于大型数

我有来自旧数据库的初始数据,大约需要6GB。我可以“转储数据”我的旧数据库没有任何问题。但是当我试图将它们恢复到新数据库时,我得到了
MemoryError

    python manage.py loaddata fixtures/initial_data.json
    MemoryError: Problem installing fixture 'fixtures/initial_data.json': 

有没有办法使
loaddata
与块一起工作,或者可以加载那个大文件?

对于大型数据库,请使用备份工具转储数据库数据,而不是“django dumpdata”。
要加载数据库数据,请使用还原工具,而不是“django loaddata”。

我编写了这个脚本,它是django dumpdata的一个分支,但会将数据转储到块中以避免内存错误。然后逐个加载这些块

脚本可在

用法示例:

1) 将数据转储到多个文件中:

mkdir some-folder

./manage.py dumpdata_chunks your-app-name
--output-folder=./some-folder --max-records-per-chunk=100000
2) 从文件夹加载数据:

find ./some-folder | egrep -o "([0-9]+_[0-9]+)" | xargs ./manage.py loaddata

另外,我用它将数据从Postgresql移动到MySQL。

这个装置包含多少个表?如果有多个表,可以将每个文件拆分为一个表。有几个表,但只有一个表那么大。我认为这是唯一的方法。问题是,一个数据库是Sql Server,另一个是Postgres,复制外键会很困难。@user2211623:复制数据时不带FK约束,然后在最后重新施加约束的标准技术是否无效?@user2211623:文章谢谢。我想我会那样做的。我在任何地方也找不到关于这个记忆犯的任何东西。所以,就是这样。为什么要从Postgresql迁移到MySQL?一如既往:客户端的请求:)原因:客户端希望将数据与一些只支持MySQL的php框架集成。