容量の大きいSQLファイルを分割する方法
容量の大きいSQLを扱うことがあり苦戦したので、対応した内容をまとめます。
対応した内容は、SQLファイルを分割し、個別にインポートする方法です。
Macの場合
split
コマンドを使用して大きなファイルを小さなファイルに分割することができます。以下に例を示します。
$ split -l 5000 your_large_file.sql small_file
このコマンドは、your_large_file.sql
を5000行ごとに分割し、small_fileaa
、small_fileab
、small_fileac
…という名前の小さなファイルを生成します。
SQLで書き出したい場合
$ for file in small_file*; do mv "$file" "${file}.sql"; done
上記のコマンドで拡張子にsqlを一括で付けます。
Windowsの場合
PowerShellを使用してファイルを分割することができます。以下に例を示します。
PowerShell
$sr = New-Object System.IO.StreamReader('your_large_file.sql')
$count = 1
$lines = @()
while ($sr.Peek() -ge 0) {
$lines += $sr.ReadLine()
if ($lines.Count -eq 5000) {
$lines | Out-File "small_file$count.sql"
$lines = @()
$count++
}
}
if ($lines) {
$lines | Out-File "small_file$count.sql"
}
$sr.Close()
このスクリプトは、your_large_file.sql
を5000行ごとに分割し、small_file1.sql
、small_file2.sql
、small_file3.sql
…という名前の小さなファイルを生成します。