2014년 1월 3일 금요일

jetty9 에 jenkins 설치 시 오류 해결(HTTP ERROR: 503 Problem accessing /jenkins. Reason: Service Unavailable)


http://localhost:8080/jenkins 에 접근하면 아래와 같은 오류가 발생할 것입니다.

- HTTP ERROR: 503 Problem accessing /jenkins. Reason: Service Unavailable
java.lang.IllegalStateException: No LoginService for org.eclipse.jetty.security.authentication.FormAuthenticator in org.eclipse.jetty.security.ConstraintSecurityHandler
     
at org.eclipse.jetty.security.authentication.LoginAuthenticator.setConfiguration(LoginAuthenticator.java:44)
인증과 관련해서 발생하는 문제인데,
  1. jenkins.xml 파일을 추가하고
  2. realm.properties 를 추가하면 됩니다.


하단 예제를 보시기 전에 테스트 환경을 간략하게 알려드립니다.
  • JETTY_HOME = /srv/jetty
  • JETTY_PORT = 8081
  • JETTY_USER = jetty

권한 설정을 위해서 jenkins.xml 파일을 webapps에 생성합니다.
* jetty 9 부터는 contexts 폴더가 사라지고 관련 설정을 webapps 폴더에서 합니다.
# vi /srv/jetty/webapps/jenkins.xml
<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<!-- ==================================================================
Configure and deploy the jenkins web application in $(jetty.home)/webapps/jenkins

Note. If this file did not exist or used a context path other that /jenkins
then the default configuration of jetty.xml would discover the jenkins
webapplication with a WebAppDeployer.  By specifying a context in this
directory, additional configuration may be specified and hot deployments 
detected.
===================================================================== -->

<Configure class="org.eclipse.jetty.webapp.WebAppContext">


  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <!-- Required minimal context configuration :                        -->
  <!--  + contextPath                                                  -->
  <!--  + war OR resourceBase                                          -->
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <Set name="contextPath">/jenkins</Set>
  <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/jenkins.war</Set>

  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <!-- Optional context configuration                                  -->
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <Set name="extractWAR">true</Set>
  <Set name="copyWebDir">false</Set>
  <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
  <!--<Set name="overrideDescriptor"><SystemProperty name="jetty.home" default="."/>/webapps/jenkins.d/override-web.xml</Set>-->

  <Get name="securityHandler">
    <Set name="loginService">
      <New class="org.eclipse.jetty.security.HashLoginService">
        <Set name="name">Jenkins Realm</Set>
        <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
            <!-- To enable reload of realm when properties change, uncomment the following lines -->
            <!-- changing refreshInterval (in seconds) as desired                                -->
            <!-- 
           <Set name="refreshInterval">5</Set>
           <Call name="start"></Call>
           -->
      </New>
    </Set>
    <Set name="authenticator">
      <New class="org.eclipse.jetty.security.authentication.FormAuthenticator">
        <Set name="alwaysSaveUri">true</Set>
      </New>
    </Set>
    <Set name="checkWelcomeFiles">true</Set>
  </Get>

  <!-- Add context specific logger
 <Set name="handler">
   <New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler">
     <Set name="requestLog">
    <New id="RequestLogImpl" class="org.eclipse.jetty.server.NCSARequestLog">
      <Set name="filename"><Property name="jetty.logs" default="./logs"/>/jenkins-yyyy_mm_dd.request.log</Set>
      <Set name="filenameDateFormat">yyyy_MM_dd</Set>
      <Set name="append">true</Set>
      <Set name="LogTimeZone">GMT</Set>
    </New>
     </Set>
   </New>
 </Set>
 -->

</Configure>

만약 $JETTY_HOME/etc/realm.properties 파일이 존재하지 않으면 생성시켜줍니다.
  1. demo 에서 복사
# cp /srv/jetty/demo-base/etc/realm.properties /srv/jetty/etc
  2. 직접생성
# vi /srv/jetty/etc/realm.properties
#
# This file defines users passwords and roles for a HashUserRealm
#
# The format is
#  <username>: <password>[,<rolename> ...]
#
# Passwords may be clear text, obfuscated or checksummed.  The class
# org.eclipse.util.Password should be used to generate obfuscated
# passwords or password checksums
#
# If DIGEST Authentication is used, the password must be in a recoverable
# format, either plain text or OBF:.
#
jetty: MD5:164c88b302622e17050af52c89945d44,user
admin: CRYPT:adpexzg3FUZAk,server-administrator,content-administrator,admin,user
other: OBF:1xmk1w261u9r1w1c1xmq,user
plain: plain,user
user: password,user

# This entry is for digest auth.  The credential is a MD5 hash of username:realmname:password
digest: MD5:6e120743ad67abfbc385bc2bb754e297,user


마지막으로 다시 추가된 파일들을 위해서 권한 설정을 하고 재시작을 합니다.
# chown -R jetty:jetty /srv/jetty/webapps
# 
chown -R jetty:jetty /srv/jetty/etc
# service jetty restart
# 
curl http://localhost:8081/jenkins

CentOS 6 에서 jetty 9 설치하기 + jenkins

jetty 9 (현재 최신 버전)을 설치하는 하고 거기에 jenkins 까지 올려보겠습니다

STEP1 : jetty 설치

rpm이나 yum을 이용하고 싶으나 공식적인 저장소가 없으므로 기본적인 방법을 이용해보겠습니다.

먼저 jetty 9의 경우 JDK 1.7 버전이 요구됩니다.
# yum install java-1.7.0-openjdk
우선 tmp 폴더에 jetty를 다운로드 받습니다.(http://download.eclipse.org/jetty/stable-9/dist/ 에서 최신 버전을 확인합니다.)
# cd /tmp
# wget wget http://download.eclipse.org/jetty/9.1.0.v20131115/dist/jetty-distribution-9.1.0.v20131115.tar.gz -O jetty.tar.gz
# 
tar -xf jetty.tar.gz

jetty라는 사용자를 생성하고 jetty를 /srv/jetty 경로로 이동시킵니다. 이제 /srv/jetty 가 jetty 홈경로입니다. 그리고 권한까지 생성합니다.
# useradd jetty
# mv jetty /srv
# chown -R jetty:jetty /srv/jetty
서비스에 등록한다.
# ln -s /srv/jetty/bin/jetty.sh /etc/init.d/jetty
# chkconfig --add jetty
# chkconfig jetty on
등록된 서비스를 수정한다. 최초 주석 아래쪽에 하단 내용을 추가한다. (본인의 경우 8081을 작동포트로 하였다.)
# vi /etc/init.d/jetty

# jetty에 추가할 내용
JETTY_HOME=/srv/jetty
JETTY_USER=jetty
JETTY_ARGS=jetty.port=8081
JETTY_LOGS=/srv/jetty/logs

8081 방화벽을 해제한다.
# vi /etc/sysconfig/iptables

# 방화벽에 추가할 내용
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT
jetty를 기동하고 내용을 확인한다.
# service jetty start

# curl http://localhost:8081


1차적으로 jetty 가동까지는 확인하였습니다.


STEP2 : jenkins 설치


jetty 기본 webapps 경로에 jenkins.war 최신 버전을 다운로드합니다.
# cd /srv/jetty/webapps
# wget http://mirrors.jenkins-ci.org/war/latests/jenkins.war


권한 설정을 위해서 jenkins.xml 파일을 webapps에 생성합니다.
* jetty 9 부터는 contexts 폴더가 사라지고 관련 설정을 webapps 폴더에서 합니다.
#  /srv/jetty/webapps/jenkins.xml
<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">

<!-- ==================================================================
Configure and deploy the jenkins web application in $(jetty.home)/webapps/jenkins

Note. If this file did not exist or used a context path other that /jenkins
then the default configuration of jetty.xml would discover the jenkins
webapplication with a WebAppDeployer.  By specifying a context in this
directory, additional configuration may be specified and hot deployments 
detected.
===================================================================== -->

<Configure class="org.eclipse.jetty.webapp.WebAppContext">


  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <!-- Required minimal context configuration :                        -->
  <!--  + contextPath                                                  -->
  <!--  + war OR resourceBase                                          -->
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <Set name="contextPath">/jenkins</Set>
  <Set name="war"><SystemProperty name="jetty.home" default="."/>/webapps/jenkins.war</Set>

  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <!-- Optional context configuration                                  -->
  <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
  <Set name="extractWAR">true</Set>
  <Set name="copyWebDir">false</Set>
  <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
  <!--<Set name="overrideDescriptor"><SystemProperty name="jetty.home" default="."/>/webapps/jenkins.d/override-web.xml</Set>-->

  <Get name="securityHandler">
    <Set name="loginService">
      <New class="org.eclipse.jetty.security.HashLoginService">
        <Set name="name">Jenkins Realm</Set>
        <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
            <!-- To enable reload of realm when properties change, uncomment the following lines -->
            <!-- changing refreshInterval (in seconds) as desired                                -->
            <!-- 
           <Set name="refreshInterval">5</Set>
           <Call name="start"></Call>
           -->
      </New>
    </Set>
    <Set name="authenticator">
      <New class="org.eclipse.jetty.security.authentication.FormAuthenticator">
        <Set name="alwaysSaveUri">true</Set>
      </New>
    </Set>
    <Set name="checkWelcomeFiles">true</Set>
  </Get>
 
  <!-- Add context specific logger
 <Set name="handler">
   <New id="RequestLog" class="org.eclipse.jetty.server.handler.RequestLogHandler">
     <Set name="requestLog">
    <New id="RequestLogImpl" class="org.eclipse.jetty.server.NCSARequestLog">
      <Set name="filename"><Property name="jetty.logs" default="./logs"/>/jenkins-yyyy_mm_dd.request.log</Set>
      <Set name="filenameDateFormat">yyyy_MM_dd</Set>
      <Set name="append">true</Set>
      <Set name="LogTimeZone">GMT</Set>
    </New>
     </Set>
   </New>
 </Set>
 -->

</Configure>

만약 $JETTY_HOME/etc/realm.properties 파일이 존재하지 않으면 생성시켜줍니다.
  1. demo 에서 복사
# cp /srv/jetty/demo-base/etc/realm.properties /srv/jetty/etc
  2. 직접생성
# vi /srv/jetty/etc/realm.properties
#
# This file defines users passwords and roles for a HashUserRealm
#
# The format is
#  <username>: <password>[,<rolename> ...]
#
# Passwords may be clear text, obfuscated or checksummed.  The class
# org.eclipse.util.Password should be used to generate obfuscated
# passwords or password checksums
#
# If DIGEST Authentication is used, the password must be in a recoverable
# format, either plain text or OBF:.
#
jetty: MD5:164c88b302622e17050af52c89945d44,user
admin: CRYPT:adpexzg3FUZAk,server-administrator,content-administrator,admin,user
other: OBF:1xmk1w261u9r1w1c1xmq,user
plain: plain,user
user: password,user

# This entry is for digest auth.  The credential is a MD5 hash of username:realmname:password
digest: MD5:6e120743ad67abfbc385bc2bb754e297,user


마지막으로 다시 추가된 파일들을 위해서 권한 설정을 하고 재시작을 합니다.
# chown -R jetty:jetty /srv/jetty/webapps
# 
chown -R jetty:jetty /srv/jetty/etc
# service jetty restart
# 
curl http://localhost:8081

확인하시면 됩니다.!!!!!!!!!!!!!!!!!!!!!

2014년 1월 2일 목요일

RHEL6 / Centos6 에서 Yum 으로 Nginx 설치하기

Step #1: nginx 저장소 설치하기

Type the following wget command to install nginx yum configuration file:
# cd /tmp
CentOS Linux v6.x user type the following command:
# wget http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
# rpm -ivh nginx-release-centos-6-0.el6.ngx.noarch.rpm

RHEL v6.x user type the following command:
# wget http://nginx.org/packages/rhel/6/noarch/RPMS/nginx-release-rhel-6-0.el6.ngx.noarch.rpm
# rpm -ivh nginx-release-rhel-6-0.el6.ngx.noarch.rpm

Sample outputs:
warning: nginx-release-rhel-6-0.el6.ngx.noarch.rpm: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing...                ########################################### [100%]
   1:nginx-release-rhel     ########################################### [100%]

Step #2: nginx 설치하기

Type the following yum command to install nginx web-server:
# yum install nginx
Sample outputs:
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.tt.co.kr
 * extras: centos.tt.co.kr
 * updates: centos.tt.co.kr
nginx                                                                                                        | 2.9 kB     00:00     
nginx/primary_db                                                                                             |  25 kB     00:00     
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package nginx.x86_64 0:1.4.4-1.el6.ngx will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================
 Package                     Arch                         Version                                 Repository                   Size
====================================================================================================================================
Installing:
 nginx                       x86_64                       1.4.4-1.el6.ngx                         nginx                       311 k

Transaction Summary
====================================================================================================================================
Install       1 Package(s)

Total download size: 311 k
Installed size: 770 k
Is this ok [y/N]: Y
Downloading Packages:
nginx-1.4.4-1.el6.ngx.x86_64.rpm                                                                             | 311 kB     00:01     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Installing : nginx-1.4.4-1.el6.ngx.x86_64                                                                                     1/1 
----------------------------------------------------------------------

Thanks for using nginx!

Please find the official documentation for nginx here:
* http://nginx.org/en/docs/

Commercial subscriptions for nginx are available on:
* http://nginx.com/products/

----------------------------------------------------------------------
  Verifying  : nginx-1.4.4-1.el6.ngx.x86_64                                                                                     1/1 

Installed:
  nginx.x86_64 0:1.4.4-1.el6.ngx                                                                                                    

Complete!
 

Step #3: nginx 서비스 등록

Type the following command:
# chkconfig nginx on

How do I start / stop / restart nginx web-server?

Type the following commands:
# service nginx start
# service nginx stop
# service nginx restart
# service nginx status
# service nginx reload

Step #4: 설정파일

  1. Default configuration directory: /etc/nginx/
  2. Default SSL and vhost config directory: /etc/nginx/conf.d/
  3. Default log file directory: /var/log/nginx/
  4. Default document root directory: /usr/share/nginx/html
  5. Default configuration file: /etc/nginx/nginx.conf
  6. Default server access log file: /var/log/nginx/access.log
  7. Default server access log file: /var/log/nginx/error.log
To edit the nginx configuration file, enter:
# vi /etc/nginx/nginx.conf
Set or update worker_processes as follows (this must be set to CPU(s) in your system. Use thelscpu | grep '^CPU(s)' command to list the number of CPUs in the server)
worker_processes  2;
Turn on gzip support:
gzip  on;
Save and close the file. Edit the file /etc/nginx/conf.d/default.conf, enter:
# vi /etc/nginx/conf.d/default.conf
Set IP address and TCP port number:
    listen       202.54.1.1.1:80;
Set server name:
    server_name  www.cyberciti.biz;
Save and close the file. Start the server:
# service nginx start
Verify that everything is working:
# netstat -tulpn | grep :80
# ps aux | grep nginx

방화벽 설정: TCP 80 포트 오픈

Edit the file /etc/sysconfig/iptables, enter:
# vi /etc/sysconfig/iptables
Add the following lines, ensuring that they appear before the final LOG and DROP lines for the INPUT chain to open port 80:
 
-A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
 
Save and close the file. Finally, restart the firewall:
# service iptables restart

참조 : http://www.cyberciti.biz/faq/install-nginx-centos-rhel-6-server-rpm-using-yum-command/

CentOS(리눅스-linux) 버전확인 방법

# lsb_release -a

LSB Version:    :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch
Distributor ID: CentOS
Description:    CentOS release 6.5 (Final)
Release:        6.5
Codename:       Final


명령의 뜻은 (Linux Standard Base) 이다

참조 : http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/lsbrelease.html

요즘 CentOS의 재미에 푹 빠져있다.

지금까지 개발자로써 너무 안이하게 살았던 거 같다

회사업무에만 신경쓰다보니 신기술 경향, 자기개발 등에 너무 신경쓰지 않았나 싶다.

그래서 부랴부랴 호스팅, 도메인도 신청하고 apache + tomcat만 했던 내 자신을 반성하고
최근 떠오르는 nginx, jetty, github, cordova, (+ spring3.0, mybatis, struts) 공부 겸
취미로 사이트 하나도 구축할 생각이다.

개인적으로 관리하는 소스들은 사내 저장소나 개인 하드에 보관하였는데,
이번기회에 개인 호스팅을 이용한 형상관리도 같이 해볼예정이다.

원래 우분투를 해볼까도 했지만,
웹개발자 베이스에서는 역시 레드햇계열을 만지는게 좋을 거 같아서 CentOS로 하기로 했다.

요즘 뜨는 리눅스는 민트인데 -_ -, SE도 아닌 내가 만지기엔 조금 무리가 있다고 생각이 든다.

이제부터 리눅스에 ngix, jetty, github 등을 CentOS 6.x 기반에 설치할 예정인데,
그와 관련된 것과 새로 만드는 사이트에 대한 포스팅이 주가 될 듯하다.





2013년 12월 19일 목요일

No operations allowed after connection closed 오류 해결

com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was ? milliseconds ago. The last packet sent successfully to the server was ? milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:


Java(Spring)  + MySQL 환경에서 이런 식의 오류가 발생하는 경우가 있다.

원인 Exception을 따져보면 
MySQL DB 커넥션(세션)이 너무 오랫동안 미 사용이라서 커넥션이 강제 해제 당했다고 인식하면 되겠다.
(네크워크가 끈기는 경우도 있으나, 이럴 경우는 에러 메세지가 다르다) 궁극적으로 MySQL 설정에 따른 오류가 발생한 것이라고 인식하면 된다 (WAS DataSource, JDBC 드라이버, MySQL 서버 문제나 오류는 아니다.)
MySQL 기본 설정은 8(28800)시간동안 DB 연결이 없을 경우에는 세션을 해제하도록 되어있다.

그러면서 mysql-jdbc 설정에서 autoReconnect=true 를 설정하라고 되어있다.

MySQL 관련 문서 링크
http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html

잡설은 이정도로 하고 해결방안을 알아보면 3가지 방법 정도가 있겠다.

1. MySQL wait_timeout 값을 올린다.
   MySQL console 에서 Set GLOBAL wait_timeout = 숫자; 로 설정하거나, /etc/my.cnf 파일을 수정하면 된다.

2. JDBC 커넥션 설정 시 autoReconnect옵션을 활성화 시킨다.
    jdbc:mysql://ip:port/dbname?autoReconnect=true
   위 처럼 jdbc URL을 수정하면 된다.

3. JDBC 커넥션 설정 시 주기적으로 더미 SQL 조회 쿼리를 날린다. (validationQuery)
    WAS가 톰켓일 경우에는 DataSource 설정 시에 톰켓에서 제공하는 옵션을 이용하면 되겠다.
   /META-INF/context.xml 이나 %톰켓홈경로%conf/server.xml 에서 DataSource resource를 설정시..

<Resource name="jdbc/mysql_dbcp_pool"
    auth="Container"
    type="javax.sql.DataSource"
    driverClassName="com.mysql.jdbc.Driver"
    loginTimeout="100"
    maxActive="100"
    maxIdle="30"
    maxWait="50000"
    username="nonsan"
    password="nonsan12"
    validationQuery="SELECT 1"

이런 식으로 설정하면 되겠다. 옵션에 대한 자세한 문서는 하단 참조

validationQuery는 유효한 쿼리인데 유효 커넥션을 유지하기 위해 더미 SQL을 날리는 옵션이다. 더 자세한 내용은 꼭 하단 문서를 참조해야한다.
manual : http://commons.apache.org/proper/commons-dbcp/configuration.html


1. 의 경우에는 근본적인 해결은 아니라고 볼 수 있고

2. 의 경우에는 Transation 관련해서 버그가 있어서 제공벤더에서도 deprecated 된 상태이다. 만약 이 방법을 사용할려면 사용자 정의 트랜젝션 처리를 해야하는 것은 당연하다. 치명적인 데이터 일관성 문제가 생길수 도 있기 때문이다. (deprecated 된 것은 다 이유가 있다.)
참조 : http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html

3. 의 경우는 괜찮은 솔루션 이지만 commons-dbcp를 사용하지 않으면 다른 대안을 찾아야한다. 알아본 결과 타 DBCP 에서도 비슷한 옵션을 제공하고 있으니 꼭 메뉴얼 문서를 참조해보자. 단 대처가 없을 경우에는  2.를 사용하던지 아니면 사용하는 DBCP(DataSource)를 commons-dbcp로 수정해야 할 것이다.








2013년 9월 12일 목요일

의약품등 분류번호(의약품 분류표) DB Query insert 문

의약품등 분류번호

관련한 문서는 존재하나 insert.sql이 서치를 해도 나오질 않아서 이렇게 올립니다.


첨부파일로 올릴수도 없으니 그냥 아래에 복붙



INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('100',null,'신경계 감각기관용 의약품',null,1 );
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('110','100','중추신경계용 약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('111','110','전신마취제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('112','110','최면진정제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('113','110','항전간제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('114','110','해열, 진통, 소염제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('115','110','각성제, 흥분제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('116','110','진훈제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('117','110','정신신경용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('119','110','기타의 중추신경용 약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('120','100','말초신경계용 약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('121','120','국소마취제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('122','120','골격근이완제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('123','120','자율신경계',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('124','120','진경제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('125','120','발한제, 지한제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('129','120','기타의 말초신경용 약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('130','100','감각기관용약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('131','130','안과용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('132','130','이과용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('139','130','기타의 감각기관용 약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('140','100','알레르기용 약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('141','140','항히스타민제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('142','140','자격료법제','특이성 면역원제포함',3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('149','140','기타의 알레르기용 약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('190','100','기타의 신경계 및 감각기관용의 약품',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('200',null,'개개의 기관계용 의약품',null,1);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('210','200','순환계용 약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('211','210','강심제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('212','210','부정맥용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('213','210','이뇨제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('214','210','혈압강하제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('215','210','혈관보강제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('216','210','혈관수축제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('217','210','혈관확장제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('218','210','동맥경화용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('219','210','기타의 순환계용 약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('220','200','호흡기관용 약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('221','220','호흡촉진제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('222','220','진해거담제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('223','220','함소흡입제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('229','220','기타의 호흡기관용 약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('230','200','소화기관용 약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('231','230','치과구강용 약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('232','230','소화성궤양용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('233','230','건위소화제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('234','230','제산제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('235','230','최토제, 진토제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('236','230','이담제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('237','230','정장제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('238','230','하제, 완장제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('239','230','기타의 소화기관용 약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('240','200','호르몬제','항호르몬제를 포함',2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('241','240','뇌하수체호르몬제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('242','240','수액신호르몬제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('243','240','갑상선, 부갑상선호르몬제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('244','240','단백동화스테로이드제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('245','240','부신호르몬제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('246','240','남성호르몬제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('247','240','난포호르몬제 및 황체호르몬제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('248','240','혼합호르몬제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('249','240','기타의 호르몬제','항호르몬제를 포함',3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('250','200','비뇨생식기관 및 항문용 약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('251','250','요로소독제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('252','250','자궁수죽체',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('253','250','통경제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('254','250','피임제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('255','250','비뇨생식기관용제','성병예방제포함',3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('256','250','치질용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('259','250','기타의 비뇨생식기관 및 항문용 약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('260','200','외피용 약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('261','260','외피용살균소독제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('262','260','창상보호제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('263','260','화농성질환용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('264','260','진통, 진양, 수렴, 소염제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('265','260','기생성 피부질환제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('266','260','피부 연화제','부식제를 포함',3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('267','260','모발용제','발모, 탈모, 염모, 양모제',3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('268','260','욕제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('269','260','기타의 외피용 약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('290','200','기타의 개개의 기관용 의약품',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('300',null,'대상성 의약품',null,1);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('310','300','비타민제',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('311','310','비타민A 및 D제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('312','310','비타민B₁제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('313','310','비타민B제','비타민B₁제를 제외',3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('314','310','비타민C 및 P제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('315','310','비타민E 및 K제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('316','310','혼합비타민제(비타민A,D 혼합제를 제외)',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('319','310','기타의 비타민제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('320','300','자양강장변질제',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('321','320','칼슘제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('322','320','무기질제제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('323','320','당류제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('324','320','유기산제제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('325','320','단백아미노산제제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('326','320','장기제제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('327','320','유유아용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('329','320','기타의 자양강장변질제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('330','300','혈액 및 체액용 약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('331','330','혈액대용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('332','330','지혈제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('333','330','혈액응고저지제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('339','330','기타의 혈액 및 체액용 약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('340','300','인공관류용제',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('341','340','인공신장관류용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('349','340','기타의 인공과류용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('390','300','기타의 대사성 의약품',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('391','390','간장질환용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('392','390','해독제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('393','390','습관성중독용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('394','390','통풍치료제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('395','390','효소제제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('396','390','당뇨병용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('398','390','종합새사성제제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('399','390','따로 분류되지 않는 대사성 의약품',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('400',null,'조직세포의 기능용 의약품',null,1);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('410','400','조직부활용약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('411','410','클로로필제제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('412','410','색소제제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('419','410','기타의 세포부활용 약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('420','400','종양욕약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('421','420','항악성종양제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('429','420','기타의 종양치료제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('430','400','조직세포의 치로 및 진단 목적',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('431','430','방사성 의약품',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('439','430','기타의 조직세포의 치료 및 진단',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('490','400','기타의 조직세포의 기능용 의약품',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('600',null,'항병원생물성 의약품',null,1);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('610','600','항생물질제제',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('611','610','주로 그람양성균에 작용하는 것',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('612','610','주로 그람음성균에 작용하는 것',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('613','610','주로 항간성균에 작용하는 것',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('614','610','주로 그람양성균, 리케치아, 비루스에 작용하는 것',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('615','610','주로 그람양성, 음성균, 리케치아, 비루스에 작용하는 것',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('616','610','주로 곰팡이, 원중에 작용하는 것',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('617','610','주로 악성종양에 작용하는 것',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('618','610','주로 그람양성, 음성균에 작용하는 것',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('619','610','기타의 항생물질 제제','복합항생물질제제를 포함',3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('620','600','화학료법제',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('621','620','설화제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('622','620','항결핵제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('623','620','치나제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('624','620','구매제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('625','620','후란계 제제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('629','620','기타의 화학료법제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('630','600','생물학적 제제',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('631','630','백신류',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('632','630','독소류 및 톡소이드류',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('633','630','항독소 및 렙토스피라혈청류',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('634','630','혈액제제류',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('635','630','생물학적 시험용제제류',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('636','630','생물학적 제제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('639','630','기타의 생물학적 제제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('640','600','기생동물에 대한 의약품',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('641','640','항원충제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('642','640','구충제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('649','640','기타의 기생동물에 대한 의약품',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('690','600','기타의 병원생물에 대한 의약품',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('700',null,'치료를 주목적으로 하지 않는 의약품 및 관련제품',null,1);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('710','700','조제용약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('711','710','부형제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('712','710','연고기제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('713','710','용해제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('714','710','교미교취착색제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('715','710','유화제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('719','710','기타의 조제용 약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('720','700','진단용 약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('721','720','X선조양제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('722','720','일반검사용 시약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('723','720','혈액검사용 시약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('724','720','생화학적 검사용 시약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('725','720','면역혈청학적 검사용 시약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('726','720','세균학적 검사용제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('727','720','병리조직검사용 시약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('728','720','기능검사용 시약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('729','720','기타의 진단용 약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('730','700','공중위생용약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('731','730','방부제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('732','730','방영욕 살균소독제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('733','730','방충제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('734','730','살충제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('739','730','기타의 공중위생용 약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('740','700','관련제품',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('741','740','캅셀류',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('790','700','기타의 치료를 주목적으로 하지 않는 의약품',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('791','790','반창고',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('799','790','따로 분류되지 않고 치료를 주목적으로 하지 않는 의약품',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('800',null,'마약',null,1);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('810','800','알카로이드 마약','천연',2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('811','810','아편알카로이드계 제제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('812','810','코카알카로이드계 제제',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('819','810','기타의 알카로이드계 마약','천연마약',3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('820','800','비알카로이드계 마약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('821','820','합성마약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('829','820','기타의 비알카로이드계 마약',null,3);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('890','800','기타의 마약',null,2);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('900',null,'위생응품',null,1);
INSERT INTO drugs_db_types(code, upper_code, name, etc, depth)VALUES('1100',null,'의료용구',null,1);