首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel从sql文件执行sql查询

问Laravel从sql文件执行sql查询
EN

Stack Overflow用户
提问于 2019-11-13 22:59:58
回答 1查看 147关注 0票数 0

因为测试没有测试数据库,所以我使用手动生成的sql脚本来清理我的生产数据库的一个数据库克隆。假设我的遗留数据库如下:

代码语言:javascript
复制
ohimesama
id: PK
namae: Varchar (200)

oujisama:
id: pk
namae: Varchar(200)


ohimesamagasuki:
id: pk
ohimesama_id: fk ohimesama
oujisama_id: fk oujisama

测试数据库清理sql (cleanup.sql)脚本是:

代码语言:javascript
复制
DELETE * from ohimesama where namae not in ['Gardinelia', 'Jasmine'];
DELETE * from oujisama where namae not in ['Gaouron', 'Sasuke','Aladin'];
DELETE * from ohimesamagasuki where ohimesama_id not in (SELECT id from ohimesama) and oujisma not in
(SELECT id from oujisama); 

因为我希望能够用一个事务执行所有这些命令,所以我希望能够读取cleanup.sql文件,并使用Laravel数据库层执行sql命令,而不需要手动编写它。

我怎么能做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-13 22:59:58

正如在这个medium article中所看到的,您可以使用这一个单独的线条:

代码语言:javascript
复制
    DB::unprepared(file_get_contents('cleanup.sql'));

唯一的问题是sql命令没有分块,因此在大型sql文件中可能会导致速度减慢。此外,file_get_contents也有读取限制。

对于大型sql文件,建议手动读取并将其分块到selerate sql命令中。

此外,如果一个命令执行失败,则不会像在shell环境中通过mysql或psql命令那样继续执行下一个命令

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58839871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档