bash_2026

スクリプト色々

CSVの列数を調べてSQL

  • CSVの列数を調べて、とりあえずvarcharでデータとしてインポートする為のテーブル作成SQLを準備する。(2026-06-25)

【get_colnum.sh】

#!/bin/bash
 
# 2026-06-25
# 指定したCSVファイルの列数を調べて
# 列名をf1,f2,f3... 、データ型を varchar
# とするCREATE TABLE の SQLを表示する
 
# 引数(ファイル名)が指定されているかチェック
if [ -z "$1" ]; then
    echo "エラー: ファイル名が指定されていません。"
    echo "使い方: $0 ファイル名.csv"
    exit 1
fi
 
# ファイルが存在しない場合に処理を実行
if [ ! -f "$1" ]; then
    echo "ファイルが存在しません"
    exit 2
fi
 
# $1(第1引数)に入ったファイル名の列数を取得して変数に代入
col_count=$(awk -F, 'NR==1 {print NF; exit}' "$1")
 
# 結果を表示
#echo "ファイルの列数は: $col_count"
 
# 仮のテーブル名を決める 年月日時分秒
TBL_NAME=$(date +"a_%Y%m%d%H%I%S")
 
echo "CREATE TABLE $TBL_NAME ("
# 1から col_count 以下の間、iを1ずつ増やしながらループ
for ((i=1; i<=col_count; i++))
do
    if [ $i -eq $col_count ]; then
        kanma=""
    else
        kanma=","
    fi
    echo "    f$i varchar $kanma"
done
 
echo ");"

テスト・基本事項

数を指定してループ

【num_loop.sh】

#!/bin/bash
 
# 例として列数に「5」が入っていると仮定
col_count=5
 
# 1から col_count 以下の間、iを1ずつ増やしながらループ
for ((i=1; i<=col_count; i++))
do
    echo "現在の列番号: $i"
done