ablog

不器用で落着きのない技術者のメモ

複数のSQLが記述されたテキストファイルを1SQL=1ファイルに分割する bash スクリプト

以下のような1ファイルにファイル名とSQLテキストがまとめて書かれているファイルを filename1.sql、filename2.sql、filename3.sql のように別々のファイルに分割して、ファイルの中身に "select * from t1;" のような SQL テキストになるようにする bash スクリプト

元ファイル
filename1.sql;select * from t1;
filename2.sql:select * from t2;
filename3.sql;select * from t3;
出力ファイル
  • filename1.sql
select * from t1;
  • filename2.sql
select * from t2;
  • filename3.sql
select * from t3;
bash スクリプト
  • split_file_per_sql.sh
#!/bin/bash

export LANG=C

cat AccNavi_ALL_SQL.sql|while read LINE
do
        FILE_NAME=`echo "${LINE}"|perl -lane 'print $F[0]'`
        echo "${LINE}"|perl  -pe 's/^\d+\t//g' > "sql/${FILE_NAME}.sql"
done