반응형


마땅한 erd 툴이 없을 경우에 아래처럼 엑셀에다가 명세를 작성하기도 합니다.

그리고 아래 형식을 그대로 복사해서 테이블 생성을 하고 싶기도 합니다.

그래서 한번 만들어 보았습니다.



<코드>

<textarea style="width:100%;height:200px;" id="a"></textarea>
 
<textarea style="width:100%;height:200px;" id="b"></textarea>
 
<script>
$(document).ready(function() {
  $(document).on("keyup""#a", generateMysqlCrateTable);
});
 
function generateMysqlCrateTable() {
  var source = $("#a").val();
  var lines = source.split("\n");
  var result = "";
  var pks = [];
  var tableComment = "";
  for (var i = 0; i < lines.length; i++) {
    switch (i) {
      case 1:
        continue;
        break;
      case 0:
        var words = lines[i].split("\t");
        result += "CREATE TABLE `" + words[1+ "` (";
        tableComment = words[0];
        break;
      default:
        var words = lines[i].split("\t");
        result += "  `" + words[1+ "` ";
        if (words[2!= '') {
          pks.push(words[1]);
        }
        result += " " + words[5];
        if (words[6!= '') {
          result += "(" + words[6+ ")";
        }
        if (words[4!= '') {
          result += " NOT NULL ";
        }
        if (words[3!= '') {
          result += " AUTO_INCREMENT ";
        }
 
        if (words[7!= '') {
          result += " DEFAULT " + words[7];
        }
        if (words[0!= '') {
          result += " COMMENT '" + words[0+ "'";
        }
        result += ",";
        break;
    }
    result += "\n";
  }
  if (pks.length > 0) {
    result += " PRIMARY KEY (";
    for (var i in pks) {
      result += "`" + pks[i] + "`,";
    }
    result = result.slice(0-1);
 
    result += "),\n";
  }
 
  result = result.slice(0-2+ "\n";
 
  result += ") ENGINE=InnoDB COMMENT='" + tableComment + "'; "
 
  $("#b").text(result);
  return;
}
 
<script>



반응형

'UTIL' 카테고리의 다른 글

javascript - snake to camel  (0) 2019.02.17

+ Recent posts