当play正在将数据库应用于数据库时,我想将存储在文件中的一些数据加载到我的mysql数据库中。
基本上当play正在运行1.sql来升级数据库时,我想运行一个“LOAD DATA INFILE”或等效的。
也许在yaml中存在LOAD DATA INFILE的等价物?
如果是,我怎么能达到类似的东西呢
LOAD DATA INFILE "/path/to/myfile" INTO TABLE myTable FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n';
由于
答案 0 :(得分:0)
LOAD DATA INFILE
是MySQL specific。您必须使用此MySQL命令使用的语法。
AFAIK,您可以使用此MySQL语句从Evolution的SQL文件加载数据。棘手的部分是正确定位您的数据文件,因为当您使用play dist
命令时,演变文件存储在您的应用程序jar中(即在您的类路径中)。因此,当您想要在生产中部署时,必须小心,并在生成的zip中添加数据文件。
答案 1 :(得分:0)
我发现了这个问题的替代方案,
在global.java中,当重新启动应用程序时,我检查我的表是否为空
if(Ebean.find(MyClass.class).findRowCount() == 0)
然后我用FileInputStream以经典的方式读取我的文件,用java string split()函数拆分行,用我的模型的save()函数更新mysql表