我有一个csv文件,大约有30,000行数据。
我需要这些数据在数据库中为我的应用程序。
我不知道应该用什么方法来初始化这个数据。
我正在使用postgresql的docker image .
我的想法是:
- 让
.sql
文件插入这些数据,并在docker运行时执行。 - 只需保留插入了这些数据的docker卷,并在每次运行时挂载它。
- 其他方式…?
第一种方法非常通用,因为插入行是一个非常常见的任务,不会中断。但缺点是我需要在每次运行docker时都这样做。
我想第二种方法更快更有效…?但是如果由于某种原因postgres更新了版本或者我决定更改数据库,那么volume可能不兼容。
有什么建议吗?
只需在主机上挂载一个卷,并将数据库放在其中。如果数据库不存在,则由Postgres Image创建。在入口点过程中,您可以检查数据库是否为空,然后加载30000条记录。
你说这可能不是最好的解决方案,原因如下:
- Volume可能不兼容postgres更新。但这不会发生,因为postgres更新将有一个非常小的机会需要重建数据库。
- 您决定更改数据库你是什么意思?修改数据库为mongodb还是MySQL?在这种情况下,无论您选择哪种解决方案,您都要进行代码更改。除非你使用ORM (NodeJS: Prisma, TypeORM?),否则可能会使更改最小化。