http://recoveryman.tistory.com/186

Posted by 모과이IT
,





위의 그림과 같이 phpmyadmin 컬럼 내의 줄바꿈 문자들 제거 체크 후에 csv(MS excel)으로 뽑고




위와 같이 데이터 텍스트 처리 하면 깔끔하게 excel로 저장할수 있다.

Posted by 모과이IT
,
핵심은 set client_encoding 이었습니다. php일 경우라면, db 연결을 한 다음 바로 
다음에 set 명령으로 client_encoding 값만 지정해 준다면 어떠한 코드 수정 없이 바로 
사용할 수 있겠네요. 그리고, DB 차원의 모든 자료는 unicode로 바꾸고. 
set client_encoding = 'uhc'" 명령어로 해결 
psql 명령이 실행된 다음 psql 프롬프트에서 set client_encoding = 'uhc'; 
이렇게 set 명령을 한번 실행시켜주면 됩니다. (커넥션별) 

매번 항상 해야하는 것이니까, ~/.psqlrc 파일에다가 윗 명령을 써주면 됩니다.

자료가 unicode로 간다면, 형태소 분석은 보다 편해집니다. unicode놈의 내부는 한글을

초,중,종성으로 분리해 낼 수 있거든요. 아직 jdbc에선 uhc문자셑을 지원하지 않나보네요.

[출처] PostgreSQL|작성자 때찌


Posted by 모과이IT
,

기본 문자셋 설정

언어셋을 따로 설정하지 않고 DB를 생성하게 되면 latin1로 설정된다. 이 경우 게시판등에 한글이 출력될때는 문제가 없을수도 있으나 DB 자료 자체를 출력해보면 ??? 와 같은 문자로 출력된다.

BASH
sudo vi /etc/mysql/my.cnf

  [client]
  default-character-set = utf8

  [mysqld]
  character-set-client-handshake=FALSE
  init_connect="SET collation_connection = utf8_general_ci"
  init_connect="SET NAMES utf8"
  character-set-server = utf8 
  collation-server = utf8_general_ci

  [mysqldump]
  default-character-set = utf8

  [mysql]
  default-character-set = utf8

수정한 후에는 MySQL을 재시작한다.

BASH
sudo service mysql restart

우선 mysql 로그인을 한다.

BASH
mysql -uroot -p

문자셋을 확인한다.

BASH
mysql> status

  Server characterset:	utf8
  Db     characterset:	utf8
BASH
mysql> show variables like '%char%';

  +--------------------------+----------------------------+
  | Variable_name            | Value                      |
  +--------------------------+----------------------------+
  | character_set_client     | utf8                       |
  | character_set_connection | utf8                       |
  | character_set_database   | utf8                       |
  | character_set_filesystem | binary                     |
  | character_set_results    | utf8                       |
  | character_set_server     | utf8                       |
  | character_set_system     | utf8                       |
  | character_sets_dir       | /usr/share/mysql/charsets/ |
  +--------------------------+----------------------------+

max_allowed_packet 설정

이 값에 의해 쿼리문등으로 전송량이 결정된다. 기본값이 16M인데 이 값이 작아 오류를 내기도 한다.

BASH
sudo vi /etc/mysql/my.cnf

  [mysqld]
  max_allowed_packet    = 256M

MySQL 재시작

BASH
sudo service mysql restart

서버 이전시 DB 문자셋이 깨질경우 참고할 내용

http://blog.naver.com/PostView.nhn?blogId=nanobox&logNo=130165727244

MySQL 최적화

MySQL 서버를 최적화하기 위해 Percona's my.cnf generating tool을 사용하여 my.cnf 파일을 생성할 수 있다. 각각의 단계별 질문과 대답의 형식으로 my.cnf 파일을 생성해 준다. 이미 데이터가 들어있고 운영중인 MySQL 서버라면 백업하고 MySQL을 멈춘후 파일을 교체해야 한다.

백업하기

BASH
mysqldump --all-databases --all-routines -u root -p > ~/fulldump.sql

MySQL 서비스중지

BASH
sudo service mysql stop

원본 my.cnf 백업하고 새 파일로 교체

BASH
sudo cp /etc/my.cnf /etc/my.cnf.backup
sudo cp /path/to/new/my.cnf /etc/my.cnf

기존의 데이터베이스를 삭제하고 재설치

BASH
sudo rm -rf /var/lib/mysql/*
sudo mysql_install_db
sudo chown -R mysql: /var/lib/mysql
sudo service start mysql

Finally all that's left is to re-import your data. To give us an idea of how far the import process has got you may find the 'Pipe Viewer' utility, pv, useful. The following shows how to install and use pv for this case, but if you'd rather not use it just replace pv with cat in the following command. Ignore any ETA times produced by pv, they're based on the average time taken to handle each row of the file, but the speed of inserting can vary wildly from row to row with mysqldumps:

sudo apt-get install pv

pv ~/fulldump.sql | mysql

Once that is complete all is good to go!

This is not necessary for all my.cnf changes. Most of the variables you may wish to change to improve performance are adjustable even whilst the server is running. As with anything, make sure to have a good backup copy of config files and data before making changes.


MySQL Tuner is a useful tool that will connect to a running MySQL instance and offer suggestions for how it can be best configured for your workload. The longer the server has been running for, the better the advice mysqltuner can provide. In a production environment, consider waiting for at least 24 hours before running the tool. You can get install mysqltuner from the Ubuntu repositories:


sudo apt-get install mysqltuner

Then once its been installed, run it:

mysqltuner

and wait for its final report. The top section provides general information about the database server, and the bottom section provides tuning suggestions to alter in your my.cnf. Most of these can be altered live on the server without restarting, look through the official MySQL documentation (link in Resources section) for the relevant variables to change in production. The following is part of an example report from a production database which shows there may be some benefit from increasing the amount of query cache:

-------- Recommendations -----------------------------------------------------

General recommendations:

    Run OPTIMIZE TABLE to defragment tables for better performance

    Increase table_cache gradually to avoid file descriptor limits

Variables to adjust:

    key_buffer_size (> 1.4G)

    query_cache_size (> 32M)

    table_cache (> 64)

    innodb_buffer_pool_size (>= 22G)

One final comment on tuning databases: Whilst we can broadly say that certain settings are the best, performance can vary from application to application. For example, what works best for Wordpress might not be the best for Drupal, Joomla or proprietary applications. Performance is dependent on the types of queries, use of indexes, how efficient the database design is and so on. You may find it useful to spend some time searching for database tuning tips based on what applications you're using it for. Once you get past a certain point any adjustments you make will only result in minor improvements, and you'll be better off either improving the application, or looking at scaling up your database environment through either using more powerful hardware or by adding slave servers.



출처: http://webdir.tistory.com/217

Posted by 모과이IT
,

#

# Alias 설정

#


<IfModule alias_module>


    Alias /myadmin/ "C:/APM_Setup/Server/phpMyAdmin/"

    <Directory "C:/APM_Setup/Server/phpMyAdmin">

        Options MultiViews

        AllowOverride None

        Order deny,allow

        deny from all

        Allow from 127.0.0.1

    </Directory>


</IfModule>



이 부분에서.


#

# Alias 설정

#


<IfModule alias_module>


    Alias /myadmin/ "C:/APM_Setup/Server/phpMyAdmin/"

    <Directory "C:/APM_Setup/Server/phpMyAdmin">

        Options MultiViews

        AllowOverride None

        Order allow,deny

        Allow from all

    </Directory>


</IfModule>


이렇게 바꾸시면 됩니다.

설정 파일은


APM_Setup\Server\Apache\conf\extra\httpd-alias.conf


입니다,.


[출처]

http://www.apmsetup.com/board.php?bid=511&bs_type=&bs_str=&pg=180&mode=view&uid=20151


Posted by 모과이IT
,

1. apmsetup 설치

2. 설치한 컴의 윈도우 방화벽 제어판에 -> 고급 -> 인바운드 -> mysql 포트 3306 TCP 추가

3. mysql workbench로 'anywhere'로 설정한 계정으로 DB 접속


성공~!


Posted by 모과이IT
,

INNODB를 사용해야 하는데 PHPMyAdimn에서는 데이터베이스를 만들 때 innoDB로 생성할 수 있도록 선택할 수 있는 부분이 없네요.

어떻게 하면 DB를 innoDB로 만들 수 있나요?

??? 2007-11-13 14:47:18  
APM_Setup\my.ini 파일을 열으셔서

# INNODB타입을 사용할지 하지 않을지
skip-innodb

부분을

# INNODB타입을 사용할지 하지 않을지
#skip-innodb

으로 수정 하신 후

mySQL 서버를 다시 시작하시면 사용 하실 수 있습니다.
Posted by 모과이IT
,

전제 상황은 윈도우7에서 apmsetup으로 php,mysql를 설치한 경우다

phpmyadmin과 mysql workbench를 사용한다.


1. phpmyadmin에 "사용권한"으로 들어가서 "새사용자"추가를 한다

추가를 할때 "호스트"를 "아무데서나" 옵션으로 만든다 그리고 전체적 권한은 모두 체크


2. 윈도우7 방어벽 포트를 기본 3360포트를 열어 주어야한다

제어판 -> 방화벽 -> 고급설정 -> 인바운드 규칙 -> 새규칙(클릭)

을하여 3306 포트를 열어 준다 -> "규칙 사용 안함" 으로 놔둔다


3. mysql workbench로 접속을 하면 접속이 되어진다.


'개발지식창고 > DataBase' 카테고리의 다른 글

[Mysql] WorkBench로 원격 접속  (0) 2015.09.08
Mysql에서 InnoDB 활성화시키기  (0) 2015.09.07
[SQLITE] SQLITE 관련 사이트  (0) 2013.06.28
[SQLITE] 자료형  (0) 2013.06.28
MFC 환경에서 MySQL 연동하는 방법  (0) 2010.08.31
Posted by 모과이IT
,

 

http://www.sqlite.org/datatype3.html

http://www.tutorialspoint.com/sqlite/index.htm

 

 

'개발지식창고 > DataBase' 카테고리의 다른 글

Mysql에서 InnoDB 활성화시키기  (0) 2015.09.07
mysql 외부 접속 허용하기  (0) 2015.06.14
[SQLITE] 자료형  (0) 2013.06.28
MFC 환경에서 MySQL 연동하는 방법  (0) 2010.08.31
MySQL : Data Type (1 of 2)  (0) 2010.08.31
Posted by 모과이IT
,

출처 : http://blog.daum.net/sukee/17162407

저장형과 컬럼 친화성

SQLite에는 저장형(Storage Class)와 컬럼 친화성(Column Affinity)이 있습니다.

저장형은 각 값에 붙여지는 태그이며, 정렬이나 비교와 같은 연산을 실행할 때 사용됩니다. 컬럼 친화성은 다른 데이터베이스와 호환을 위해 제공됩니다. 이미 오라클이나 MySQL과 같은 데이터베이스에 경험이 있는 분들에게는 이 부분이 많이 헷갈릴 수 있습니다. 


저장형

저장형(Storage Class)은 각 값에 붙는 타입입니다. 다시 한 번 강조하자면, 각 값에 붙는 타입입니다. 오라클이나 MySQL 같은 경우에는 타입이 각 컬럼에 부여됩니다. 예를 들어, MySQL에서 테이블을 만들 때, 어떤 컬럼의 타입을 정수로 결정하면, 이후로 그 테이블의 그 컬럼에는 정수만이 들어갈 수 있습니다. 다시 말해, 정수가 아니면 안 되는 거죠. SQLite는 이와 같지 않습니다.

다음은 SQLite의 다섯 저장형입니다:

NULL:    값이 NULL인 경우.

INTEGER: 부호 있는 정수. 상황에 따라 1, 2, 3, 4, 6, 8 바이트가 됨.

REAL:    부동소수점. IEEE 부동소수 규격에 따른 8바이트.

TEXT:    문자(열). 기본적으로 UTF-8으로 저장되며 UTF-16 BE나 UTF-16 LE를 사용할 수 있음.

BLOB:    이진 데이터. 외부에서 전달된 데이터를 그대로 저장됨.

위 저장형은 다음 절에서 설명하는 컬럼 친화성과 함께 봐야 이해가 되므로, 저장형은 SQLite에서 타입을 의미한다는 정도만 알고 일단 패스!

컬럼 친화성

먼저, 우리에게 익숙한 다음 쿼리로 시작해 보겠습니다.

sqlite> CREATE TABLE tbl_test (One INTEGER, Two INTEGER);

위 쿼리로 두 개의 컬럼(One, Two)이 있는 테이블(tbl_test)을 하나 만들었습니다. 두 컬럼 모두 정수형이기 때문에, 위 테이블에는 정수만이 들어갈 수 있습니다. 그렇죠? 그러나 SQLite는 다릅니다! 다음으로 직접 확인해 보죠.

sqlite> INSERT INTO tbl_test VALUES (123, 456);
sqlite> INSERT INTO tbl_test VALUES (123, 456.7);
sqlite> INSERT INTO tbl_test VALUES (123, 456.0);
sqlite> INSERT INTO tbl_test VALUES (123, '456');
sqlite> INSERT INTO tbl_test VALUES (123, '456two');
sqlite> INSERT INTO tbl_test VALUES (123, 'ant');
sqlite> INSERT INTO tbl_test VALUES (123, ant);

위 실행중에서 가장 마지막 것만 오류가 발생하고 나머지는 실행됩니다. 즉 값이 테이블에 저장됩니다. 다음처럼 직접 확인해 보세요.

sqlite> SELECT * FROM tbl_test;

위에서 테이블을 만들 때, INTEGER란 키워드를 사용했는데 이는 컬럼 친화성을 지정하는 키워드 중에 하나였습니다. SQLite에는 모두 다섯 개의 컬럼 친화성이 있습니다: TEXT, NUMERIC, INTEGER, REAL, NONE.

자~ 여기서 맥(?)을 함 짚고 넘어 가겠습니다: 테이블을 생성하는 쿼리문이 동일하기 때문에, 여러분은 위의 INTEGER가 컬럼 타입이라고 생각하게 된 겁니다. SQLite에서는 컬럼 타입(Column Type)이 아니라 컬럼 친화성(Column Affinity)으로 사용되고 있습니다. 컬럼 타입은 딱 하나를 결정하는 것이고, 컬럼 친화성은 어떤 우선 순위를 취할지 결정하는 겁니다. 어떤 우선 순위라?

우리는 테이블을 만들고 거기에 데이터를 저장합니다; 레코드를 기본 단위로 저장합니다. 위 테이블 예에서, 오라클이나 MySQL은 레코드를 저장할 때마다 컬럼의 값들이 항상 정수입니다. 레코드가 추가되더라도 이건 변하지 않고 고정된 거죠. SQLite에서는 동일한 컬럼일지라도 각 레코드마다 다른 타입을 가질 수 있습니다.

아래 쿼리는 위에서 사용했던 것과 동일한데, 각 쿼리의 끝에 저장형을 보여주고 있습니다.(컬럼 친화성이랑 헷갈리지 마세요)

sqlite> INSERT INTO tbl_test VALUES (123, 456);       --(INTEGER, INTEGER)
sqlite> INSERT INTO tbl_test VALUES (123, 456.7);     --(INTEGER, REAL)
sqlite> INSERT INTO tbl_test VALUES (123, 456.0);     --(INTEGER, INTEGER)
sqlite> INSERT INTO tbl_test VALUES (123, '456');     --(INTEGER, INTEGER)
sqlite> INSERT INTO tbl_test VALUES (123, '456two');  --(INTEGER, TEXT) 
sqlite> INSERT INTO tbl_test VALUES (123, 'ant');     --(INTEGER, TEXT) 
sqlite> INSERT INTO tbl_test VALUES (123, ant);       --ERROR

위 쿼리에서 눈여겨 볼 부분은 두 번째 컬럼(컬럼 Two, 컬럼 친화성 INTEGER)입니다. 먼저 첫 번째 쿼리에서, 정수 값(456)이 입력되었으므로 저장형은 INTEGER가 됩니다.(INTEGER란 키워드는 컬럼 친화성과 저장형에 모두 있으므로 헷갈리지 마세요) 두 번째 쿼리에서는 정수가 아닙니다(456.7). SQLite는, 컬럼 친화성이 INTEGER이므로, 먼저 이 값이 정수가 될 수 있는지 확인합니다. 그런데 정수가 될 수가 없기 때문에 차선으로 REAL 저장형을 선택한 것입니다. 세 번째 쿼리에서도 정수로 변환 가능한지 확인하는데, 이번에는 가능합니다. 때문에 INTEGER 저장형을 부여합니다. 네 번째도 세번째에서와 마찬가지로 정수로 변환 가능하므로 INTEGER 저장형을 부여했습니다. 그 다음 값('456two')은 어떻습니까? 이 값은 정수가 될 수도 없고 부동 소수가 될 수도 없습니다. 그 다음으로 TEXT로 변환 가능하기 때문에 TEXT 저장형을 부여했습니다. 그 다음 여섯 번째도 마찬가지입니다. 마지막 쿼리에서의 값(ant)은 정수도 부동 소수도 될 수가 없기 때문에 텍스트가 되야 하는데, 작은 따옴표가 없기 때문에 에러를 발생합니다. 컬럼 친화성에 상관없이 작은 따옴표를 사용하지 않는 값의 경우에는 숫자만이 가능합니다.

음, 여기서 말한 컬럼 친화성이란 입력되는 값에 따라 어떤 타입을 우선해서 선택할까를 의미합니다. 그럼 다음 번에는 다섯 개 컬럼 친화성의 우선 순위에 대해서 알아 보도록 하겠습니다.

자동 증가 Autoincrement

자동 증가는 보통 테이블의 키로 사용됩니다. 그래서 유일한 값을 갖는게 중요하지요. 다른 테이블에서 외래키(foreign key)로 사용될 때도 필요하구요. 다음 처럼 간단합니다.

CREATE TABLE tbl_test (
  RowID INTEGER PRIMARY KEY AUTOINCREMENT,
  Name  TEXT,
  Age   INTEGER
);

**참고  http://qkrgns208.tistory.com/119?srchid=BR1http://qkrgns208.tistory.com/119


 

'개발지식창고 > DataBase' 카테고리의 다른 글

mysql 외부 접속 허용하기  (0) 2015.06.14
[SQLITE] SQLITE 관련 사이트  (0) 2013.06.28
MFC 환경에서 MySQL 연동하는 방법  (0) 2010.08.31
MySQL : Data Type (1 of 2)  (0) 2010.08.31
MFC MYSQL 연동  (0) 2010.08.31
Posted by 모과이IT
,