You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何使用SELECT * INTO语句?新手求助

解决Laravel中执行SQL Server SELECT INTO语句的问题

首先,你当前代码的核心问题是DB::raw()仅用于构建SQL表达式,不会实际执行这条语句。要运行这类数据操作/定义语句,需使用DB::statement()方法。

修改后的可执行代码示例:

$archive_db = "SELECT * INTO tmp.dbo.dataset_15112022_124949 FROM tmp.dbo.dataset";
// 若需切换数据库,先更新配置并清除旧连接
config(['database.connections.sqlsrv.database' => 'tmp']);
DB::purge('sqlsrv');
// 执行SQL语句
DB::connection('sqlsrv')->statement($archive_db);

额外注意事项:

  • 确保你的SQL Server数据库账号拥有创建新表和读取源表数据的权限,SELECT INTO会自动创建目标表并插入数据
  • 如果表名是动态生成的,为避免SQL注入,需手动转义表名:
    $targetTable = DB::connection('sqlsrv')->getPdo()->quote('tmp.dbo.dataset_15112022_124949');
    $sourceTable = DB::connection('sqlsrv')->getPdo()->quote('tmp.dbo.dataset');
    $archive_db = "SELECT * INTO $targetTable FROM $sourceTable";
    DB::connection('sqlsrv')->statement($archive_db);
    

内容的提问来源于stack exchange,提问作者Cbrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 16:10:25