我正在使用Django构建一个带有MySQL (MyISAM)后端的网站。
数据库数据是从外部脚本处理的大量XML文件中导入的,并以JSON文件的形式输出。每当新的JSON文件与旧的不同时,我需要擦除旧的MySQL-db并使用manage.py loaddata重新创建它(至少这是一个简单的方法,我想我可以检查JSON文件之间的差异并将其应用到数据库中,但我还没有想出一个好的解决方案(我既不是一个很好的程序员,也不是一个web开发人员))。
无论如何,JSON文件大约有10Mb,最终大约有21000行SQL (预计不会有很大的增长)。有7个表,它们看起来都像这样:
class Subnetwork(models.Model):
SubNetwork = models.CharField(max_length=50)
NetworkElement = models.CharField(max_length=50)
subNetworkId = models.IntegerField()
longName = models.CharField(max_length=50)
shortName = models.CharField(max_length=50)
suffix = models.CharField(max_length=50)将其导入MySQL最多需要一分钟(有时只需30秒)。我不知道这种大小的文件会不会出现这种情况?我可以做些什么(如果有的话)来提高性能?
下面是一些分析器输出https://gist.github.com/1287847
发布于 2011-10-20 00:27:29
我通过将处理后的XML文件导出到csv而不是json来解决这个问题,然后使用一个名为mysqlimport的单独脚本进行导入。
发布于 2011-10-16 05:39:27
有几个解决方案,与其他解决方案相同,但这里有一个变通方法,可以将系统的“停机时间”保持在最低限度,而不需要编写数据库同步机制(这在大多数情况下可能是更好的解决方案):
settings_build.py文件,from settings import *为新的数据库选择一个随机的名称(可能包含数据库名称中的日期),通过调用mysqladmin创建它,并通过克隆或调用该命令将名称更新到DATABASES.builddb),在成功的结果中,它应该将数据库名称写到一个dbname文本文件中,并执行一个重新加载django的外壳命令(apache/<custom django management command>C12builddb>/?)server.settings.py以从文本文件加载数据库名称。现在像这样运行你的构建过程:
./manage.py builddb --settings=settings_buildhttps://stackoverflow.com/questions/7771790
复制相似问题