WP Remix
Nop Pinyowanichaka | ก้าวสั้นๆ ในวันเบาๆ ของผม

Database

3
Jul
2009

บางครั้งเราต้องการแทนคำต่างๆ ใน Table ของเราใน MySQL ก็สามารถทำได้ด้วย Function Replace ที่ Build in มาในตัว MySQL อยู่แล้ว โดยใช้คำสั่งดังนี้

update table_name set field_name = replace(field_name, 'คำที่ค้นหา','คำที่ต้องการแทนที่');

แค่นี้ก็เรียบร้อยแล้วครับ

Category : MySQL | Blog

Warning: include(/home1/krabiphi/public_html/nop.in.th/wp-content/themes/nop/includes/ad/blog_firstpost_ad.php) [function.include]: failed to open stream: No such file or directory in /home1/krabiphi/public_html/nop.in.th/wp-content/themes/nop/archive.php on line 71

Warning: include() [function.include]: Failed opening '/home1/krabiphi/public_html/nop.in.th/wp-content/themes/nop/includes/ad/blog_firstpost_ad.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home1/krabiphi/public_html/nop.in.th/wp-content/themes/nop/archive.php on line 71
25
Nov
2008

เนื่องจากบางครั้งมือใหม่ WP อาจจะ เดี๋ยว Page เดี๋ยว Post ปนกันไป ปนกันมา แต่เมื่อเข้าใจหลักการแล้วก็อยากแก้ให้มันถูกต้อง ไอ้ครั้นจะ copy ๆ paste ๆ ก็ดูจะลำบากไปสักนิด เลยขอนำเสนอ SQL Script ในการเปลี่ยน Post เป็น Page หรือ Page เป็น Post

ต้องเข้าไปเขียน SQL Script เพื่อทำการ Update ค่า post_type ให้เป็น ดังที่เราต้องการ อันนี้ขอยกตัวอย่าง 2 อัน คือ page และ post โดย
ให้ update ที่ ID ของ Post หรือ Page นั้นๆ โดยเอา mouse ไปวาง แล้วดูที่ status bar ดังรูป

จากนั้นก็ทำการ Run SQL Script

UPDATE wp_posts SET post_type = ‘post’ WHERE  ID =473 ;

แค่นี้ Page ก็เปลี่ยนเป็น Post แล้วครับ

Category : MySQL | Blog
23
Aug
2008

หลังจากที่ย้าย Server ไป Hostmonster MSIT9 Webboard ก็ใช้งานไม่ได้เรื่อยมา เป็นระยะเวลาเกือบ 2-3 เดือน เนื่องจากติดปัญหาใหญ่ๆ เลยก็คือ File Database ที่ dump มาจาก mysqldump นั้น มีขนาดใหญ่โตถึง 450-500 Mb (เฉพาะ posts table ของ ipb นี่ก็ 400 แล้ว) เมื่อรวบ Log File แล้วยิ่งใหญ่โตเข้าไปอีก แค่คิดก็ท้อซะแล้ว แต่ด้วยมีความต้องการ webboard เก่าคืน ผมจึงพยายามหาทางทำมาเรื่อย อันดับแรกผมลบ ข้อมูลที่เป็น Spam Post ทิ้งทั้งหมด แล้วก็ไม่เอา Log อะไรเลย ไฟล์จึงเหลือ ขนาดสักประมาณ 10 Mb ได้ (โห..ลบไปเยอะนะเนี้ย)

แต่แม้จะเหลือแค่ 10 Mb ชีวิตผมก็ไม่ได้ง่ายขึ้นเลย เพราะว่า นอกจากจะต้องแปลง Encoding แล้ว ผมยังต้อง หาทาง Split File ที่ได้จาก mysqldump ให้เหลือสักไม่เกิน 1 Mb ด้วย เพราะถ้าไฟล์ขนาดนี้ การ ส่งไป Monster Host ไม่่ง่ายเลย เพราะมันจะเดี้ยง เดี้ยง และ เดี้ยง

แต่แล้วผมก็ได้พบกับ BigDump ที่ช่วย Webboard ของผมได้ในที่สุด เพราะโปรแกรมสามารถทำให้ restore ข้อมูลขนาดใหญ่ๆ ได้อย่างสบายๆ เพราะว่า ถ้าไฟล์มันใหญ่มาก ก็ upload ผ่าน FTP ไปแทนเลย ซึ่ง โปรแกรมนี้แก้ปัญหาให้ผมได้นั่นเอง

หน้าตาโปรแกรมเป็นแบบข้างบน

อ่านต่อ “BigDump Save My Ass” »

Category : MySQL | Blog
28
Jul
2008

เพิ่งพยายามกลับมาใช้ Opensource Database แต่เนื่องจากมีความหลังเจ็บปวดกับ MySQL ในหลายๆเรื่อง (ที่ตัวเองไม่เก่ง) เลยขอลี้มาใช้งานสบายๆ กับ PGSQL ดีกว่า ที่เอามาฝากคราวนี้เป็นการ Backup กับ Restore Database แบบสะดวกๆ เหมือน sql_dump ของ MySQL

วิธีการ Backup ด้วยคำสั่ง pg_dump ใน Folder bin ของ PostgreSQL
C:\Program Files\PostgreSQL\8.3\bin>pg_dump -U postgres db_hcms > d:\abc\sqlfile.sql

วิธีการ Restore ไฟล์ที่ Backup ด้วย pg_dump ด้วยคำสั่ง psql ใน Folder bin ของ PostgreSQL
C:\Program Files\PostgreSQL\8.3\bin>psql -U postgres db_hcms < d:\abc\sqlfile.sql

Category : PostgreSQL | Blog
11
Jul
2008

เมื่อก่อนตอนใช้ MySql แรกๆ ผมก็ติดตั้งแล้วก็ใช้งาน ลง Application แล้วก็ไม่ได้สนใจอะไรมาก แต่เมื่อถึงเวลาย้าย Server กลับต้องมามองว่า แล้ว Database ที่เราเก็บเนี้ย มันอ่านภาษาไทยไม่ได้เนี้ย ต้องทำยังไงกับมันดี ก็ได้ทดลอง และ พบวิธีแก้ปัญหา ดังที่เขียนด้านล่างครับ

ขั้นตอนแรกต้องอ่าน Table มันออกมาเป็น Script SQL เสียก่อน ด้วยคำสั่ง Backup Mysql ชื่อ mysqldump

ตัวอย่าง
เข้าไปที่ Dos
พิมพ์คำสั่ง cd \ เพื่อเข้าไปที่ Root ของ Drive C
พิมพ์คำสั่ง mysqldump –default-character-set={ค่า charset} -u {Username} -p {ชื่อ database}> backup.sql

ตัวอย่าง : mysqldump –default-character-set=latin1 -u root -p db_museumshopbangkok> msbkk_backup.sql

โดยแทนค่าดังนี้
{ค่า charset} = ของผมจะเป็น latin1
{Username} = username สำหรับ mysql
{ชื่อ database} = ชื่อ database ที่ต้องการ backup

อ่านต่อ “แปลง Mysql Database ภาษาต่างดาวเป็น ภาษาไทย แบบปกติ” »

Category : MySQL | Blog
5
Jun
2008

หลังจากที่ร้างลาไม่ได้เข้ามายุ่มยามกับ MySQL เท่าไหร่ แต่มีเหตุอันต้องกลับมาใช้ แต่อยากจะทำการจัดการเกี่ยวกับวันที่ในระบบ เลยเก็บรวบรวม Function ที่จำเป็นต้องใช้เกี่ยวกับวันที่มารวบรวมไว้

ถ้าคุณต้องการ จัดรูปแบบวันที่ใน MySQL ละก็ต้องนี่

select date_format(’2008-02-01′, ‘%d-%m-%Y’)

ผลจะออกมาเป็น 01-02-2008

ถ้าคุณต้องการเพิ่มวัน ต้องแบบนี้

SELECT ’2008-02-01′ + INTERVAL 6 day

ผลจะออกมาเป็น 2008-02-07

ถ้ามีเพิ่มเติมในแต่ละขั้นตอนจะนำมาโพสเพิ่มเติมครับ

Category : MySQL | Blog
4
Apr
2008

คราวที่แล้วเขียน SP สร้าง ตารางวันที่ แต่ไอ้ตอนที่แปลง Format มันแปลง ดุ้นๆ ไปไม่ค่อยเวิ๊ก อันนี้เป็นการจัด Format Datetime อย่างเป็นทางการ

อันนี้เป็น format นี้ 05-04-2008

SELECT CONVERT(varchar(10), getdate()+1, 105)

อันนี้เป็น format นี้ 05/04/2008

SELECT CONVERT(varchar(10), getdate()+1, 103)

ปล. ที่ต้อง +1 ให้กับ getdate() ก็เพราะว่า มันเป็นวันที่ 4 เดือน 4 เดี๋ยวจะงง

Category : MSSQL | Blog
26
Mar
2008

การเอา Textfile เข้า ฐานข้อมูล MSSQL จริงๆ ไม่ต้องใช้ Temptable ก็ได้ ถ้าใช้บ่อย สร้างเป็นถาวรก็น่าจะใช้งานได้ง่ายกว่า แต่สำหรับผมเองผมว่าเอาเข้า Temptable ไว้ก่อน แล้วค่อยเอามาใช้จริงๆ แต่สำหรับการเขียน Webที่ Connection เปิดหนึ่งครั้ง ปิดหนึ่งครั้ง Temptable ก็หายไปบางครั้งก็คงไม่เหมาะ

ขั้นแรกก็สร้าง Temptable ซะก่อน ด้วยคำสั่ง Create table ธรรมดานี่แหละครับ เพียงแต่ใส่ # ไว้ข้างหน้าเพื่อบอกว่าเป็น Temptable

1
2
3
4
5
CREATE TABLE #tempdata (
id varchar(4),
usr VARCHAR(100),
pwd VARCHAR(100)
)

อ่านต่อ “การเอา Textfile เข้า Temptable ด้วย MSSQL” »

Category : MSSQL | Blog
26
Mar
2008

เขียน MSSQL store procedure เพื่อทำ Crosstab หรือ Pivot Table

วันก่อน มีโอกาสต้องเขียน การแสดงผลข้อมูลเป็นแบบ แนวนอน หรือที่เค้าเรียกกันว่า Crosstab แต่เนื่องด้วย ฐานข้อมูลที่ใช้ มันเป็น MSSQL 2000 มันไม่มีพวก Pivot Table มาให้ (Access ยังมีเลย) เลยต้องหาเอาเอง ไปเจอเว็บนึงเค้า เขียนเป็น Store Procedure ไว้ เอามาใช้ Work เลยทีเดียว ตอบโจทย์ได้เลย

ตัวอย่างของ Data

Year Region Income
Y2007 North 20
Y2007 South 10
Y2007 East 30
Y2006 North 10

Y2006 South 10

Y2006 East 10

เมื่อทำ Crosstab แล้วจะได้แบบนี้

Year North South East
Y2006 10 10 10
Y2007 20 10 30

อ้าวแล้วทำยังไงให้ได้แบบนี้ล่ะ มาดูวิธีการกันเลยครับ

อ่านต่อ “เขียน MSSQL store procedure เพื่อทำ Crosstab หรือ Pivot Table” »

Category : MSSQL | Blog
27
Feb
2008

วันนี้มีความต้องการสร้างฐานข้อมูลวันที่ในตารางของ MSSQL แต่ให้ไปนั่ง Key เอาหรือไป Copy เอาคงไม่ไหว เลยเขียน Script เอาไว้สร้างวันที่เอาไว้เผื่อใครเอาไปใช้ครับ

declare @i int
declare  @CAL_DATE datetime
SET @i=0
while (@i &lt; 1825)
begin
	-- เอาวันพรุ่งนี้เข้า
	SET @CAL_DATE = (SELECT REPLACE(CONVERT(varchar(11), GETDATE()+@i, 111),'/','-'))
	INSERT INTO MS_CALENDAR (CAL_DATE) VALUES (@CAL_DATE)
	-- เอาวันพรุ่งนี้เข้า
	-- เอาเมื่อวานเข้า
	SET @CAL_DATE = (SELECT REPLACE(CONVERT(varchar(11), GETDATE()-@i, 111),'/','-'))
	INSERT INTO MS_CALENDAR (CAL_DATE) VALUES (@CAL_DATE)
	-- เอาเมื่อวานเข้า
	SET @i=@i+1
end
Category : MSSQL | Blog