いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

insert文出力スクリプト

下のXMLデータからinsert分を作成するスクリプト。
またも、手抜きスクリプト。
面倒なのでDOM使用。

//
// vim: set ts=2 sw=2 et ft=java:
//
import java.io.File
import javax.xml.parsers.DocumentBuilderFactory

// 引数にXMLを指定
doc     = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(args[0]))

// [tables] tag
root    = doc.getDocumentElement()

tables  = root.getElementsByTagName("table")

tables.each{ table |
  tableName = table.getAttribute("name")

  rows = table.getElementsByTagName("row")

  rows.each{ row |
    columns = row.getElementsByTagName("column")

    columnNameList = []
    columnDataList = []
    columns.each{ column |
      name   = column.getAttribute("name")
      value  = column.getAttribute("value")
      type   = column.getAttribute("type")

      tmp = value
      if(type.toLowerCase() == "char" || type.toLowerCase() == "varchar" || type.toLowerCase() == "varchar2"){
        tmp = "'" + tmp + "'"
      }

      columnNameList.add(name)
      columnDataList.add(tmp)
    }

    columnNames  = columnNameList.join(",")
    columnValues = columnDataList.join(",")

    println "insert into ${tableName} (${columnNames}) values (${columnValues});"
  }
}

PerlとかRubyみたいに

while(<>){
}

ってできたら楽なのにな〜。



================================
過去の記事については、以下のページからご参照下さい。