VBAを使って実現できます。
コード例
VBA
Sub GenerateCreateTableSQL()
  Dim ws As Worksheet
  Dim tbl As ListObject
  Dim col As ListColumn
  Dim sql As String
  Dim firstCol As Boolean
  ‘対象のワークシートとテーブルを指定
  Set ws = ThisWorkbook.Sheets(“Sheet1”) ‘シート名を変更
  Set tbl = ws.ListObjects(“Table1”) ‘テーブル名を変更
  ‘SQL文の初期化
  sql = “CREATE TABLE ” & tbl.Name & ” (“
  ‘各列をループ処理
  firstCol = True
  For Each col In tbl.ListColumns
    If Not firstCol Then
      sql = sql & “, “
    End If
    sql = sql & “[” & col.Name & “] ” & GetSQLDataType(col.Range.Cells(1).Value)
    firstCol = False
  Next col
  sql = sql & “);”
  ‘SQL文を出力
  Debug.Print sql
End Sub
‘データ型をSQLデータ型に変換する関数
Function GetSQLDataType(cellValue As Variant) As String
  Select Case TypeName(cellValue)
    Case “String”
      GetSQLDataType = “VARCHAR(255)”
    Case “Double”
      GetSQLDataType = “FLOAT”
    Case “Integer”
      GetSQLDataType = “INT”
    Case “Date”
      GetSQLDataType = “DATE”
    Case Else
      GetSQLDataType = “VARCHAR(255)”
  End Select
End Function
コードの解説
- 対象のシートとテーブルを指定: Sheet1 の Table1 というテーブルを対象としています。シート名とテーブル名は適宜変更してください。
- SQL文の初期化: CREATE TABLE で始まるSQL文を作成します。
- 各列をループ処理: テーブルの各列に対して、列名とデータ型をSQL文に追加します。
- データ型変換: GetSQLDataType 関数でExcelのデータ型をSQLのデータ型に変換します。
- SQL文を出力: 生成されたSQL文をイミディエイトウィンドウに出力します。
使用方法
- ExcelのVBAエディタを開きます(Alt + F11)。
- 挿入 > 標準モジュール を選択し、上記のコードをモジュールに貼り付けます。
- コード内のシート名とテーブル名を実際のシート名とテーブル名に変更します。
- GenerateCreateTableSQL マクロを実行します。
注意点
- このコードは基本的なデータ型のみをサポートしています。必要に応じて GetSQLDataType 関数を拡張してください。
- プライマリキーや外部キーなどの制約は考慮されていません。
- テーブルに大量のデータが含まれている場合は、処理に時間がかかることがあります。
拡張機能
- プライマリキーや外部キーなどの制約を追加する。
- NULL値の許容/非許容を設定する。
- データ型をより詳細に指定する (例: VARCHAR のサイズ指定)。
- 生成されたSQL文をファイルに出力する。
このコードを参考に、Excelシートの表からSQLのCREATE TABLE文を生成してみてください。
 
                    
コメントを残す
コメントを投稿するにはログインしてください。