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
相关产品推荐
相关产品推荐

