使用PowerShell循环提取MySQL文件指定表内容并写入新SQL文件
MySQL导出SQL文件批量提取指定表脚本(PowerShell版)
改造后完整可用脚本
# 定义需要提取的表名数组 $tableList = @("address", "client") $sourceFile = "file.sql" $targetFile = "new_file.sql" # 提前删除已存在的目标文件,避免旧内容干扰 if (Test-Path $targetFile) { Remove-Item $targetFile -Force } # 循环遍历每张待提取的表 foreach ($table in $tableList) { $write = $false # 动态拼接当前表的起始匹配字符串 $startMatch = "-- Table structure for table ``$table``" $tableContent = switch -CaseSensitive -File $sourceFile { $startMatch { $write = $true; $_ } 'UNLOCK TABLES;' { if ($write) { $_ $write = $false break } } default { if ($write) { $_ } } } # 将当前表内容追加到目标文件,同时末尾加换行分隔不同表 $tableContent | Add-Content -Path $targetFile -Encoding UTF8 Add-Content -Path $targetFile -Value "`r`n" -Encoding UTF8 }
核心改造点说明
- 直接使用PowerShell原生数组定义待提取表名,语法更简洁,不需要调用ArrayList
- 改用
foreach遍历表名,不需要手动维护索引,避免索引越界、下标起始值错误问题 - 起始匹配字符串根据当前遍历的表名动态生成,适配所有待提取表的匹配规则
- 统一使用
Add-Content追加写入,提前删除旧目标文件避免残留内容,每轮提取完成后自动追加空行分隔不同表的SQL内容 - 新增编码指定为UTF8,避免中文乱码问题,可根据实际导出文件编码调整
内容的提问来源于stack exchange,提问作者JasonX
相关产品推荐
相关产品推荐

