쉘스크립트

Database 이용하기

트리스탄1234 2022. 7. 6. 13:23
728x90
반응형

 

스크립트로 데이터를 처리를 하고 변수에 저장을 해서 이용을 할수 있지만 스크립트가 종료가 되고 나면 처리된 데이터들이 모두 삭제가 되어 버립니다. 영구적인 데이터를 이용하기 위해서는 스크립트에서 Database를 사용을 해야 하는데요 이 장에서는 Database를 사용하는 방법에 대해 알아 보도록 하겠 습니다.

1. MySQL Database

우선 MySQL을 설치 하는 방법부터 살펴 보겠 습니다.

1) www.mysql.com 싸이트에 접속을 합니다.

2) Download Link를 클릭 후 Coummunity에서 자신의 서버 버전에 맞는 파일을 다운로드 합니다.

3) 오라클 로그인 후 해당 파일을 다운로드 합니다.

4) TAR명령을 이용해 압축을 풀어 줍니다.

5) MySQL 환경 설정 하기.

: 자동설치를 한 경우에는 본 단계의 설정이 필요 없지만 수동으로 설치한 경우에는 환경설정을 해주어야 합니다.

- /usr/local/mysql/scripts/mysql_install_db --user=mysql ==> 디폴트 DB파일을 생성 합니다.

- cd /usr/local/mysql

- chown -R root .

- chown -R mysql data

6) 이제 설치는 모두 끝났고 보통은 서버가 재부팅을 하면 자동으로 MySQL이 시작이 되는데 확인 하는 방법과 실행 시키는 방법을 알아 보겠 습니다.

- 구동 되는지 확인 하기

ps ax | grep mysql

2084 ? S 0:00 /bin/sh /usr/bin/mysqld_safe -- datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --logerror=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid 2141 ? Sl 0:03 /usr/libexec/mysqld --basedir=/usr -- datadir=/var/lib/mysql --user=mysql --pidfile=/var/run/mysqld/mysqld.pid --skip-external-locking -- socket=/var/lib/mysql/mysql.sock 8825 pts/1 S+ 0:00 grep mysql

#

- 구동이 되어 있지 않은 경우 구동 시키기

/usr/local/mysql/bin/mysqld_safe --user=mysql &

- 리눅스 배포판에는 보통 자동으로 실행시키는 스크립트가 존재 하는데요 아래의 위치에 있습니다.

/usr/local/mysql/support-files/mysql.server

7) MySQL root 사용자 패스워드 설정 하기 : DB접근 제어를 위해 root라고 불리우는 마스터 계정이 있는데요. 설치 후에 master 계정의 패스워드를 설정을 해 주어야 됩니다.

- $ mysqladmin -u root password newpasswd

MySQL 사용자 인터페이스

MySQL 의 기본 사용자 인터페이스는 mysql 명령어 라인 입니다. mysql 명령어는 네트웍 상에 있는 어느 mysql서버로의 연결을 가능하게 해 줍니다. mysql명령을 다른 파라메터 없이 입력을 하면 기본적으로 로컬 시스템의 mysql 서버로 접속을 시도 합니다. mysql로 접속을 시도할때에는 기본적으로 자신의 계정으로 시도를 하는데, 만약 해당 계정이 mysql에 등록이 되어 있지 않으면 접속이 되지 않습니다. 다른 계정으로 로그인을 할때에는 아래처럼 -u 옵션을 이용해 접속을 할수 있습니다.

$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.0.45 Source distribution Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer.
mysql>

아래표는 mysql에서 사용가능한 파라메터들을 보여 줍니다.

MySQL 명령어

mysql프로그램은 아래의 두가지 형태의 명령어를 사용 합니다.

■ 특수 mysql 명령어

■ 표준 SQL 구문

아래표는 mysql에서 사용할수 있는 파라메터들 입니다.

반응형

아래는 mysql 명령어들 입니다. 사용시 mysql 프롬프트 상에서 풀네임이나 단축 명령어로 사용을 할 수 있습니다.

SQL과 다른 명령어 중 하나가 SHOW 명령어와 몇개가 있습니다. 그중 몇개의 명령어를 실행 시켜 보겠 습니다.

mysql> SHOW DATABASES; ==> DB를 조회 합니다.
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
+--------------------+
2 rows in set (0.04 sec)
mysql> USE mysql; ==> mysql DB를 사용 합니다.
Database changed
mysql> SHOW TABLES; ==> mysql의 tables을 조회 합니다.
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| func |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| proc |
| procs_priv |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
17 rows in set (0.00 sec)
mysql>

MySQL DB Object만들기

MySQL DB에 스크립트를 이용해 데이터를 쓰기 전에, DB Object를 먼저 만들어야 합니다.

주요 필요한 작업을 요약을 해보면 아래와 같습니다.

■ A unique database to store your application data

■ A unique user account to access the database from your scripts

■ One or more data tables to organize your data

1) DB 생성 하기

보통은 어플리케이션별로 DB를 생성해서 어플리케이션별 데이터를 분리 후 저장을 합니다.

DB를 생성하는 명령은 아래와 같습니다.

■ CREAT DATABASE name: name부분은 사용자가 만들고 싶은 DB 이름을 입력을 하면 됩니다.

DB를 생성하기 위해서는 사용자는 ID에 적정한 권한이 부여되어 있어야 하고, 보통은 root로 만들고 시작을 합니다. 아래 예를 통해 생성 방법을 살펴 보도록 합시다.

$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15 Server version: 5.0.45 Source distribution
Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer.
mysql> CREATE DATABASE test;
Query OK, 1 row affected (0.00 sec)
mysql>
이제 생성된 DB를 조회를 해 봅시다.
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test | ==> test DB가 생성된것을 볼수 있습니다.
+--------------------+
3 rows in set (0.01 sec)
mysql>
mysql> USE test; ==> USE명령을 이용하여 test DB에 접속 해 봅시다.
Database changed;
mysql> SHOW TABLES;
Empty set (0.00 sec)
mysql>

2) 사용자 계정 만들기

위의 예에서는 root 계정을 이용하여 DB를 생성하여 보았 습니다. 하지만 root 계정을 사용하는 것은 상당히 위험 합니다. root 계정은 setver의 모든 계정을 가지고 있고, root의 패스워크가 노출될 경우 되돌릴수 없는 위험을 초래 합니다.

그럼 사용자 계정을 만들어서 DB접속 권한을 부여하는 방법에 대해 알아 보도록 합시다.

test 계정에 권한을 보여하는 방법을 살펴 보겠 습니다
mysql> GRANT SELECT,INSERT,DELETE,UPDATE ON test.* TO test IDENTIFIED by ’test’;
Query OK, 0 rows affected (0.35 sec)
mysql>
구무이 길긴 하지만 하나씩 살펴 보면 GRANT는 권한을 부여 하겠다는 의미 입니다.
두번째로 SELECT, INSERT, DELETE, UPDATE는 부여할 권한 입니다. 즉 선택, 삽입, 삭제, 업데이트
권한을 부여 한다는 의미 입니다.
ON test.*은 test DB에 있는 모든 테이블(*)에 위의 권한을 부여 한다는 의미 입니다
TO test는 test라는 계정에 위의 권한을 부여 한다는 의미 이고, 만약 test라는 계정이 없으면 해당 계정을 생성을 합니다.
identified by test는 새로 생성된 계정에 대한 디폴트 패스워드를 생성하게 합니다.
$ mysql test -u test -p ==> 이제 test계정으로 DB를 접속을 해 봅시다.
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.0.45 Source distribution
Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer.
mysql>

PostgreSQL DataBase

PostgraSQL을 이용한 스크립트 활용 방법에 대해서 살펴 봅시다.

1) 설치 하기.

MySQL과 같이 설치 하는 방법은 여러분의 시스템의 Package를 활용하여 자동 설치 하는 방법이 있고 다운로드를 통한 수동 설치 방법이 있습니다. 여기서 자동 설치 하는 방법은 MySQL과 다르지 않아서 별도로 언급을 하지 않고 앞에서 설명한 절차대로 진행을 하시면 됩니다. 수동 설치 방법은 아래와 같습니다.

A. www.postgresql.org 로 접속을 합니다.

B. 최신 PostgreSQL의 링크를 클릭 합니다.

C. 다운로드할 파일을 선택을 하고 다운로드를 시작 합니다 .

D. 다온로드한 디렉토리에서 다운된 파일의 압축을 풉니다. (보통은 HOEM 디렉토리)

: tar -zxvf postgresql-8.2.6.tar.gz(다온로드한 파일명)

E. 압축을 풀고 나면 압출을 푼 파일명으로 디렉토리가 생성이 됩니다. 해당 디렉토리로 이동을 합니다 .

: $ cd postgresql-8.2.6

F. 설정 스크립트를 실행 시킵니다 .

: ./configure

G. 소스를 컴파일 하기 위해 gmake 유틸리티를 실행 시킵니다.

: gmake

H. root 사용자로 변경을 하고 설치를 실행 시킵니다.

$ su

password:

# gmake install

설치를 하고 나면 바이너리 파일들이 /usr/local/postgre/data의 경로에 설치가 됩니다

I. Postgre의 사용자를 만들고 DB의 파일이 저장될 디렉토리를 생성하고 사용자를 해당 디렉토리의 오너로

설정 합니다 .

# adduser postgres

# mkdir /usr/local/postgres/data

# chown postgres /usr/local/postgres/data

J. DB를 사용 하기 위해 PostgreeSQL DB를 초기화 합니다.

# su postgres

$ /usr/local/postgres/bin/initdb -D /usr/local/postgres/data

K. 이제 DB를 백그라운드로 실행을 시켜 보도록 하겠습니다. 만약 자동으로 부팅시에 DB를 실행 시키고 싶은

경우에는 startup 스크립트에 아래 명령을 추가를 하시면 됩니다.

# su postgres

# cd /usr/local/postgres/bin

# ./postgres -D /usr/local/postgres/data >logfile 2>&1 &

PostgreSQL 인터페이스

Postgre 인터페이스는 psql이라고 불리우는 프로그램 입니다. 이 인터페이스를 이용해서 DB에 접속 밑 관리 하는 방법에 대해서 알아 보도록 하겠 습니다.

1) 서버 연결 하기.

Postgre는 Linux 유효한 사용자 계정을 사용을 해서, postgre 리눅스 계정으로 로그인을 해야 합니다. 아래는 서버 연결 하는 절차 입니다.

$ su

Password:

# su postgres

bash-3.2$ psql

Welcome to psql 8.2.6, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms

\h for help with SQL commands

\? for help with psql commands

\g or terminate with semicolon to execute query

\q to quit

postgres=#

그리고 아래표는 postgre에서 사용 할수 있는 명령어 옵션들 입니다.

psql 명령어

psql은 표준 SQL 구문을 지원을 하고 그와는 별개로 별도의 메타 명령어를 사용할 수 있습니다.

■ Standard SQL statements

■ PostgreSQL meta-commands

메터 명령어.

지원되는 메타 명령어는 굉장히 많지만 아래는 기본적으로 많이 사용되는 명령어들 입니다. 그리고 명령어를 모르거나 도움말이 필요한 경우에는 \?를 입력 하면 됩니다.

■ \l : 사용 가능한 DB 리스트 업

■ \c : DB에 연결 하기

■ \dt : DB에 있는 테이블 출력 하기

■ \du : Postgre 사용자 리스트 업 하기

■ \z : 테이블의 권한 리스트 업 하기

■ \? : 모든 메터 명령어 리스트 업 하기

■ \h : 모든 sql 명령어 리스트 업 하기

■ \q : db 나가기

2) DB Object 만들기

MySQL고 동일하게 DB를 만듭니다. 단 postgre로 먼저 로그인을 하여야 합니다.

$ su
Password:
# su postgres
bash-3.2$ psql
Welcome to psql 8.2.6, the PostgreSQL interactive terminal.
postgres=# CREATE DATABASE test; ==> test DB 만들기
CREATE DATABASE
postgres=#
만들어진 DB를 리스트 업해 봅시다
postgres=# \l
List of databases
Name | Owner | Encoding
-----------+----------+----------
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
test | postgres | UTF8 (4 rows)
이제 test DB에 접속을 해 봅시다.
postgres=# \c
test You are now connected to database "test".
test=#

3) 사용자 계정 만들기.

DB를 만들고 난 후에는 쉘 스크립트에 접근할 수 있는 계정을 생성을 해야 합니다. 앞서 말한것과 같이 Postgre의 사용자 계정은 MySQL과는 틀린 계정 입니다. Postgre의 계정은 Login role로 불리우고, Postgre서버는 Login Role을 리눅스 계정과 동일해야 합니다. 해서 Postgre에 접속 하기 위한 계정 생성 방법은 아래와 같이 2가지가 있습니다.

■ 쉘 스크립트를 실행할수 있는 Postgre의 Login Role과 매칭이 되는 리눅스 계정 생성 방법

■ DB에 접근이 필요한 리눅스 계정을 위한 Postgre 계정 생성

여기서 두번째 방식을 이용한 방법을 살펴 보겠 습니다.

test=# CREATE ROLE rich login; ==> Login Role을 생성 합니다.
CREATE ROLE
test=#

2. 테이블 작업 하기

1) 테이블 생성 하기

앞서 MySQL과 Postgre에서 DB를 생성하고 계정을 생성하고 접근까지 진행을 해 보았습니다.

이제는 테이블을 만들고 관리하는 방법을 알아 보도록 합니다. 우선 Data Field와 Record의 차이를 알아 보도록 합니다.

DATA의 구성 요소

■ Data Filed : 정보의 한조각 예를 들면 사원 테이블에서 사원 이름.

■ Record : 연관된 데이터 필드의 모음. 사원 테이블에서 사원 정보

■ Table : 모든 사원들의 레코드 모음

표준 SQL문을 사용해 테이블 생성하기

테이블을 아래와 같이 생성해 봅시다.

$ mysql test -u root -p
Enter password:
mysql> CREATE TABLE employees ( ==> 사원 테이블을 생성 합니다.
-> empid int not null, ==> 테이블의 각 칼럼을 정의하고 속성을 정의 합니다.
-> lastname varchar(30), ==> 가변 크기의 문자형 컬럼을 생성 합니다.
-> firstname varchar(30),
-> salary float,
-> primary key (empid));
Query OK, 0 rows affected (0.14 sec)
mysql>
만들어진 테이블을 조회를 해보겠 습니다.
mysql> show tables;
+----------------+ |
Tables_in_test |
+----------------+
| employees |
+----------------+
1 row in set (0.00 sec)
mysql>
Postgre에서는 \dt 몀령을 이용해 조회를 해봅시다.
test=# \dt
List of relations
Schema | Name | Type | Owner
--------+-----------+-------+----------
ㅂpublic | employees | table | postgres
(1 row)
test=#
앞에서 설명을 했듯이 Postgre인 경우에는 테이블 레벨에서 권한을 부여를 해야 합니다.
# su postgres ==> Postgre 사용자로 전환
$ psql test ==> test 테이블로 접근
test=# GRANT SELECT,INSERT,DELETE,UPDATE ON public.employees TO rich; GRANT
test=#

여기서 MySQL과 PostgreSQL에서의 Data Type을 살펴 봅시다.

데이터 삽입하기

데이터를 삽입 하기 위해서는 INSERT 구문을 이용을 하게 됩니다. 그 사용 방법은 아래와 같습니다.

사용방법

INSERT INTO table VALUES (...) ==> 값들은 컴마로 구분이 됩니다.

INSERT 사용 예제를 살펴 보겠 습니다.
$ mysql test -u test -p
Enter password:
mysql>
Query OK,
1 row affected (0.35 sec)
Postgre 인 경우
[rich@testbox ~]$ psql test
Welcome to psql 8.2.6, the PostgreSQL interactive terminal.
test=> INSERT INTO employees VALUES (1, ’Blum’, ’Rich’, 25000.00); INSERT 0 1
test=>

데이터 삭제 하기

테이블에 있는 데이터를 삭제를 해 보도록 하겠습니다. 사용 명령은 DELETE구요 사용 구문은 아래와 같습니다.

사용구문

DELETE FROM employees WHERE COLUMN = VALUE;

mysql> DELETE FROM employees WHERE empid = 2;
Query OK, 1 row affected (0.29 sec)

데이터 쿼리 하기

삽입과 삭제를 해보았 습니다. 이제는 테이블에서 데이터를 조회하는 방법을 알아 보도록 하겠 습니다.

사용하는 구문은 SELECT이구요 사용구문은 아래와 같습니다.

사용구문

SELECT datafields FROM table

Empployee 테이블에서 모든 정보를 쿼리
mysql> SELECT * FROM employees;
+-------+----------+------------+--------+
| empid | lastname | firstname | salary |
+-------+----------+------------+--------+ |
1 | Blum | Rich | 25000 |
| 2 | Blum | Barbara | 45000 |
| 3 | Blum | Katie Jane | 34500 |
| 4 | Blum | Jessica | 52340 |
+-------+----------+------------+--------+
4 rows in set (0.00 sec)
mysql>

데이터 필터링 하기

필요한 정보만 쿼리를 하기 위해 쿼리문에서 데이터를 필터 하는 방법이 있는데요, 아래와 같이 3가지 구문을 사용을 할수 있습니다.

■ WHERE: 특정 조건을 만족하는 레코드의 부분 합을 보여 줍니다.

■ ORDER BY: 특정 순서에 따라 레코드를 표시해 줍니다.

■ LIMIT: 레코드의 부분합만 보여 줍니다 .

사용 예제를 살펴 봅시다.

mysql> SELECT * FROM employees WHERE salary > 40000; ==> salary가 40000이상 레코드만 출력
+-------+----------+-----------+--------+
| empid | lastname | firstname | salary |
+-------+----------+-----------+--------+
| 2 | Blum | Barbara | 45000 |
| 4 | Blum | Jessica | 52340 |
+-------+----------+-----------+--------+
2 rows in set (0.01 sec)
mysql>

3. 스크립트에서 DB 사용하기

이제 앞에서 공부해온 DB들을 스크립트와 같이 사용하는 방법에 대해서 알아 보도록 합시다.

DB 연결하기

1) mysql과 psql 프로그램 위치 찾기 : which를 사용해서 현재 내가 사용하는 리눅스 시스템에서 해당 프로그램의 의치를 찾아야 합니다.

$ which mysql
/usr/bin/mysql
$ which psql
/usr/bin/psql
$

위의 값들을 환경 변수에 아래와 같이 넣어 주면 스크립트에서 사용하기가 편리 합니다.

MYSQL=`which mysql`
PSQL=`which psql`

2) 서버에 로그인 하기

위에서 사용될 프로그램들의 위치를 찾았으면 이제 로그인을 하기 위해 스크립트에서 이용을 합니다.

스크립트에서 사용한 예제를 살펴 보도록 합니다.

[rich@testbox]$ cat ptest1 ==> ptest 스크립트의 내용을 살펴 봅시다.
#!/bin/bash
# test connecting to the PostgreSQL server
PSQL=`which psql` ==> PSQL 변수에 psql프로그램의 위치를 저장.
$PSQL test
[rich@testbox]$ ./ptest1 ===> 스크립트를 실행 시키면 postgre 계정에 접속할 필요 없이
바로 DB로 접속이 됩니다.
Welcome to psql 8.2.6, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit
test=>
MySQL의 경우도 살펴 보겠 습니다.
$ cat mtest1 ==> 스크립트 내용을 살펴 봅시다.
#!/bin/bash
# test connecting to the MySQL server
MYSQL=`which mysql` ==> mysql에 mysql 프로그램의 위치를 저장
$MYSQL test -u test -p ==> test DB에 test 계정으로 접속을 하기 위한 명령
$ ./mtest1 ==> 해당 스크립트를 실행 시키면 자동 접속이 됩니다.
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.0.45 Source distribution
Type ’help;’ or ’\h’ for help. Type ’\c’ to clear the buffer.
mysql>

3) 서버에 명령어 전송 하기

서버에 연결한 후에는 삭제, 삽입, 조회와 같은 명령을 서버로 전송하여 결과를 얻고 싶을것 입니다.

이 작업을 위해서는 아래와 같이 2가지 방식이 있습니다.

■ 하나의 명령을 전송 후 종료

■ 여러개의 명령어 전송

 

하나의 명령어 전송하기

$ cat mtest2 ==> 스크립트 내용을 살펴 보겠 습니다.
#!/bin/bash
# send a command to the MySQL server
MYSQL=`which mysql` ==> mysql의 프로그램 위치를 저장 합니다.
$MYSQL test -u test -e ’select * from employees’ ==> test 계정으로 test 테이블에서 employee의 모든
정보 조회
스크립트를 실행을 시켜 보면은
$ ./mtest2
+-------+----------+------------+---------+
| empid | lastname | firstname | salary |
+-------+----------+------------+---------+
| 1 | Blum | Rich | 25000 |
| 2 | Blum | Barbara | 45000 |
| 3 | Blum | Katie Jane | 34500 |
| 4 | Blum | Jessica | 52340 |
+-------+----------+------------+---------+
$
이번엔 Postgre에서 사용방법을 알아 보겠 습니다.
$ cat ptest2
#!/bin/bash
# send a command to the PostgreSQL server
PSQL=`which psql`
$PSQL test -c ’select * from employees’
$ ./ptest2
empid | lastname | firstname | salary
-------+----------+------------+--------
1 | Blum | Rich | 25000
2 | Blum | Barbara | 45000
3 | Blum | Katie Jane | 34500
4 | Blum | Jessica | 52340
(4 rows)
$

여러개의 명령어 전송 하기

$ cat mtest3
#!/bin/bash
# sending multiple commands to MySQL
MYSQL="$(which mysql)"
$MYSQL test -u test ‹‹EOF ==> 파일 리다이렉트를 이용해 전송할 명령어를 정의 합니다.
show tables;
select * from employees where salary › 40000;
EOF
실행을 시켜 보면
$ ./mtest3
Tables_in_test
employees empid lastname firstname salary
2 Blum Barbara 45000
4 Blum Jessica 52340
$
psql에서 사용 방법을 알아 보겠 습니다.
$ cat ptest3
#!/bin/bash
# sending multiple commands to PostgreSQL
PSQL="$(which psql)"
$PSQL test ‹‹EOF
\dt
select * from employees where salary › 40000;
EOF
$ ./ptest3
List of relations
Schema | Name | Type | Owner
--------+-----------+-------+----------
public | employees | table | postgres
(1 row)
empid | lastname | firstname | salary
-------+----------+-----------+--------
2 | Blum | Barbara | 45000
4 | Blum | Jessica | 52340
(2 rows)
$

이번에는 데이터를 삽입하는 예제를 하나 살펴 봅시다.

$ cat mtest4
#!/bin/bash
# send data to the table in the MySQL database
MYSQL=`which mysql` ==? mysql프로그램 위치를 저장
if [ $# -ne 4 ] ==> 입력 데이터가 4개와 같지 않으면 then 이후 문장 출력 아니면 else
then echo "Usage: mtest4 empid lastname firstname salary"
else statement="INSERT INTO employees VALUES ($1, ’$2’, ’$3’, $4)" ==> 입력된 데이터를
employee테이블에 저장
$MYSQL test -u test ‹‹ EOF
$statement
EOF
if [ $? -eq 0 ]
then echo Data successfully added
else echo Problem adding data
fi
fi
실행을 시켜 보면
$ ./mtest4 ==> 입력된 데이터의 갯수가 4개가 아니라 아래 문장 출력
Usage: mtest4 empid lastname firstname salary
$ ./mtest4 5 Blum Jasper 100000 ==> 데이터가 4개 이고 정상 입력 됨
Data added successfully
$ $ ./mtest4 5 Blum Jasper 100000 ==> 사용자 id가 중복되어 입력 되어 에러 메시지 표시
ERROR 1062 (23000) at line 1: Duplicate entry ’5’ for key 1
Problem adding data
$

데이터를 형식화 하기

아래의 예에서는 실제 DB와 연관 작업을 할때 유용한 여러가지 예제를 살펴 보도록 합시다.

출력을 변수에 저장 하기.
출력을 변수에 저장을 해두면 다른 작업에 그 출력을 활용을 할수 있습니다.
$ cat mtest5
#!/bin/bash
# redirecting SQL output to a variable
MYSQL=`which mysql`
dbs=`$MYSQL test -u test -Bse ’show databases’` ==> B는 Bash 모드, s는 silent 모드, e는
for db in $dbs
do
echo $db
done
$ ./mtest5 information_schema test
$
포맷 테그 이용하기 : 출력 결과를 HTML 형태로 표시 합니다. (-H 옵션), -x옵션을 XML 형식으로 표시
$ psql test -H -c ’select * from employees where empid = 1’
‹table border="1"›
‹tr›
‹th align="center"›empid‹/th›
‹th align="center"›lastname‹/th›
‹th align="center"›firstname‹/th›
‹th align="center"›salary‹/th›
‹/tr›
‹tr valign="top"›
‹td align="right"›1‹/td›
‹td align="left"›Blum‹/td›
‹td align="left"›Rich‹/td›
‹td align="right"›25000‹/td›
‹/tr›
‹/table›
‹p›(1 row)‹br /›
‹/p›
$

이번 포스팅은 너무 길어 진것 같은 느낌 입니다

그럼 오늘은 이만 ~~~~~~~~~~~~~

728x90
반응형

'쉘스크립트' 카테고리의 다른 글

E-Mail 사용하기  (1) 2022.07.06
Web 사용하기  (1) 2022.07.06
Advance gawk  (0) 2022.07.06
진화된 sed  (1) 2022.07.06
정규 표현식  (2) 2022.07.06