我一直使用django-import-export库将我的数据作为excel上传到Django模型,它一直工作得很好,直到我不得不上传一个有20,000行的excel,它只是花了无限的时间来完成这个操作。
你能建议正确的方式来优化数据上传到Django模型,在那里我可以轻松地上传excel文件并将数据保存在我的数据库中。
请支持。
嗨,下面是我尝试过的admin.py代码,但它的抛出错误'using_transactions‘没有定义,请确认我哪里出错了,我该怎么做才能在更短的时间内导入批量数据--
from django.contrib import admin
from import_export import resources
from .models import Station,Customer
from import_export.admin import ImportExportModelAdmin
# Register your models here.
class StationResource(resources.ModelResource):
def get_or_init_instance(self,instance_loader,row):
self.bulk_create(self, using_transactions, dry_run, raise_errors,
batch_size=1000)
class Meta:
model=Station
use_bulk=True
batch_size = 1000
force_init_instance = True
class StationAdmin(ImportExportModelAdmin):
resource_class=StationResource
admin.site.register(Station , StationAdmin)在我设置的settings.py文件中-
IMPORT_EXPORT_USE_TRANSACTIONS = True
IMPORT_EXPORT_SKIP_ADMIN_LOG = True发布于 2020-09-27 08:41:15
我不会对大数据使用import-export,而是将数据文件从我的excel文件保存为csv,并使用pandas将数据桥接到数据库中。熊猫分批完成这项工作。
发布于 2020-09-28 04:20:08
import-export提供了一个使用Django的bulk operations的bulk import模式。
只需在您的资源上启用use_bulk标志:
class Meta:
model = Book
fields = ('id', 'name', 'author_email', 'price')
use_bulk = True应该可以在几秒钟内导入20k行,但这取决于您的数据,您可能需要调整一些设置。另外,一定要阅读有关批量导入的caveats。
回购中有more detailed information。
然而,即使没有批量模式,它也应该能够在几分钟内导入20k行。如果花费的时间要长得多,则可能是导入进程正在对数据库进行不必要的读取(即对每行进行读取)。启用SQL日志记录将有助于了解这一点。CachedInstanceLoader可能会对此有所帮助。
https://stackoverflow.com/questions/64081356
复制相似问题