วันพุธที่ 28 พฤษภาคม พ.ศ. 2557

create table
insert into build_final  select *  from build1;

create PK , FK on table

CREATE TABLE products (
    product_no integer PRIMARY KEY,
    name text,
    price numeric
);

CREATE TABLE orders (
    order_id integer PRIMARY KEY,
    shipping_address text,
    ...
);

CREATE TABLE order_items (
    product_no integer REFERENCES products ON DELETE RESTRICT,
    order_id integer REFERENCES orders ON DELETE CASCADE,
    quantity integer,
    PRIMARY KEY (product_no, order_id)
);

Import CSV file into a PostgreSQL table

กรณีนี้เริ่มต้นจากไม่มีข้อมูลอะไรเลย โดยสร้างข้อมูลขึ้นเอง ไปจนกระทั่ง import เข้าสู่ Postgres โดยแยกเป็น 2 กระบวนการใหญ่ คือ ส่วนสร้างข้อมูล และส่วนของ Postgres

ส่วนสร้างข้อมูล
กรณีข้อมูลไม่ซับซ้อน
1. สร้างข้อมูลบน excel และ Save as...  source.csv โดยจะเลือกในรูปแบบใดก็ได้


2. เปิด source.csv ด้วย notepad และลบชื่อ field บรรทัดบนสุดทิ้ง








3. Save as... source.csv และเปลี่ยน encoding ให้เป็น UTF-8
4. Copy source.csv ไปไว้ที่ C:\Program Files (x86)\PostgreSQL\9.1\bin\

กรณีข้อมูลมีอักขระพิเศษอยู่ในฟิลด์ต่างๆเยอะ
1.พิมพ์ข้อมูลที่ต้องการลงบน excel โดยระหว่างคอลัมน์แทรกด้วยเครื่องหมาย "|" เพื่อใช้แทนเครื่องหมาย ","


2. Save as... source.txt จากภาพข้างล่าง .txt แต่ละชนิดจะแตกต่างกันที่รหัสของอักขระ (character) ซึ่งสามารถเลือกได้ทั้ง 3 รูปแบบ


3. แก้ไข source.txt ด้วย notepad จะมี tab คั่นระหว่าง field ซึ่งต้องทำการลบ tab นี้ทิ้ง


4. โดยการ replace และลบชื่อ field บรรทัดบนสุดทิ้ง


5. Save as ด้วยการเปลี่ยน Encoding เป็น UTF-8
6. Copy source.txt ไปไว้ที่ C:\Program Files (x86)\PostgreSQL\9.1\bin\

ส่วนงาน Postgres
1. สร้างตารางบน Postgres
CREATE TABLE source (s_code char(20) PRIMARY KEY, s_name_e varchar, s_name_t varchar);

2. import ข้อมูลเข้าสู่ตารางบน Postgres
import source.csv
COPY source FROM 'C:\Program Files (x86)\PostgreSQL\9.1\bin\source.csv' DELIMITERS ',' CSV;
import source.txt
COPY source FROM 'C:\Program Files (x86)\PostgreSQL\9.1\bin\source.txt' DELIMITERS '|' CSV;

3. ข้อมูลจะถูก import เข้าไปในตาราง ดังรูป










URL: ตัวอย่างคำสั่งบน PostgreSQL ในการ import csv to table

Create Index

Syntax :
CREATE INDEX indexname ON table (column);

indexname  ตั้งชื่อ index
column  คอลัมน์ที่กำหนดให้เป็น index

URL: postgres create an index

Create PK on existing Table

ALTER TABLE build_test ADD COLUMN g_id SERIAL;
UPDATE build_test SET g_id = nextval(pg_get_serial_sequence('build_test','g_id'));
ALTER TABLE build_test ADD PRIMARY KEY (g_id);

or

ALTER TABLE build_test ADD COLUMN g_id SERIAL;
UPDATE build_test SET g_id = DEFAULT;
ALTER TABLE build_test ADD PRIMARY KEY (g_id);


MySQL Relation CasCade On Delete/On Update

MySQL Relation CasCade On Delete/On Update ความสามารถของ MySQL ในการทำ Relation ก็สามารถทำได้เช่นเดียวกัน โดยทำหนดชนิดของ Table เป็นแบบ InnoDB โดยสามารถทำการ CasCade DELETE หรือ UPDATE ได้

Syntax InnoDB

CREATE TABLE `customer` (
.
.
.
.
) ENGINE=InnoDB;




ดูตัวอย่างครับ
ตัวอย่างผมได้ทำการสร้าง Table ชื่อ customer และ audit ซึ่งเมื่อมีการลบข้อมูลในตาราง customer ข้อมูลที่อยู่ใน audit จะถูกลบไปด้วยครับ

Table : customer

CREATE TABLE `customer` (
`CustomerID` varchar(4) NOT NULL,
`Name` varchar(50) NOT NULL,
`Email` varchar(50) NOT NULL,
`CountryCode` varchar(2) NOT NULL,
`Budget` double NOT NULL,
`Used` double NOT NULL,
PRIMARY KEY (`CustomerID`)
) ENGINE=InnoDB;


INSERT INTO `customer` VALUES ('C001', 'Win Weerachai', 'win.weerachai@thaicreate.com', 'TH', 1000000, 600000);
INSERT INTO `customer` VALUES ('C002', 'John Smith', 'john.smith@thaicreate.com', 'EN', 2000000, 800000);
INSERT INTO `customer` VALUES ('C003', 'Jame Born', 'jame.born@thaicreate.com', 'US', 3000000, 600000);
INSERT INTO `customer` VALUES ('C004', 'Chalee Angel', 'chalee.angel@thaicreate.com', 'US', 4000000, 100000);
INSERT INTO `customer` VALUES ('C005', 'Weerachai Nukitram', 'webmaster@thaicreate.com', 'TH', 2000000, 100000);



MySQL Relation CasCade



Table : audit
CREATE TABLE `audit` (
`AuditID` int(4) NOT NULL,
`CustomerID` varchar(4) NOT NULL,
`Date` date NOT NULL,
`Used` double NOT NULL,
PRIMARY KEY (`AuditID`),
FOREIGN KEY (CustomerID) REFERENCES customer (CustomerID) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB;


INSERT INTO `audit` VALUES (1, 'C001', '2008-08-01', 100000);
INSERT INTO `audit` VALUES (2, 'C001', '2008-08-05', 200000);
INSERT INTO `audit` VALUES (3, 'C001', '2008-08-10', 300000);
INSERT INTO `audit` VALUES (4, 'C002', '2008-08-02', 400000);
INSERT INTO `audit` VALUES (5, 'C002', '2008-08-07', 100000);
INSERT INTO `audit` VALUES (6, 'C002', '2008-08-15', 300000);
INSERT INTO `audit` VALUES (7, 'C003', '2008-08-20', 400000);
INSERT INTO `audit` VALUES (8, 'C003', '2008-08-25', 200000);
INSERT INTO `audit` VALUES (9, 'C004', '2008-07-04', 100000);
INSERT INTO `audit` VALUES (10, 'C005', '2008-07-04', 200000);



MySQL Relation CasCade


เพียงเท่านี้ก็จะได้ Relation 2 ตารางครับ เมื่อมีการแก้ไขหรือลบข้อมูลใน customer ข้อมูลใน audit จะมีผลในการแก้ไข หรือ ลบเช่นเดียวกันครับ               

สลับสีแถวในตาราง

  1. <style type="text/css">  
  2. /* class สำหรับแถวส่วนหัวของตาราง */  
  3. .tr_head{   
  4.     background-color:#333333;  
  5.     color:#FFFFFF;  
  6. }  
  7. /* class สำหรับแถวแรกของรายละเอียด */  
  8. .tr_odd{  
  9.     background-color:#F8F8F8;  
  10. }  
  11. /* class สำหรับแถวสองของรายละเอียด */  
  12. .tr_even{  
  13.     background-color:#F2F2F2;  
  14. }  
  15. </style>