วันอาทิตย์ที่ 31 มกราคม พ.ศ. 2559

To Do week3(Constraints)

What constraints does your selected DBMS support?
  -SQL มีข้อจำกัดในการระบุลงในตาราง เพื่อให้การเลือกและการจัดเก็บข้อมูลใน database เป็นไปอย่างถูกต้อง อธิเช่น

  1.  NOT NULL - คือการกำหนดให้ columns นั้น เป็น null ไม่ได้
  2. UNIQUE - คือการกำหนดให้ข้อมูลใน columns นั้นไม่สามารถซ้ำกันได้
  3. PRIMARY KEY - คือการกำหนดให้ columns นั้น เก็บค่า null  ไม่ได้ และ มีข้อมูลที่ไม่ซ้ำกัน
  4. FOREIGN KEY - คือการกำหนดให้ columns นั้นเก็บข้อมูลเดียวกันกับ column ในtable อื่น เพื่อใช้เป็นตัวเชื่อมโยงกันระหว่าง table 
  5. CHECK - คือการกำหนดให้ columns นั้นเก็บค่าที่เฉพาะเจาะจง
  6. DEFAULT - คือการระบุค่าเริ่มต้นสำหรับ columns นั้นๆ

 โดยการระบุ constraints  นั้นจะทำตั้งแต่การสร้างตาราง(created) หรือการแก้ไขรายละเอียดของตาราง(ALTER)เมื่อตารางนั้นได้ถูกสร้างขึ้นแล้ว
อ้างอิงจาก: http://www.w3schools.com/sql/sql_constraints.asp

How to specify them?
SQL CREATE TABLE + CONSTRAINT 
CREATE TABLE table_name
(
column_name1 data_type(sizeconstraint_name,
column_name2 data_type(sizeconstraint_name,
column_name3 data_type(sizeconstraint_name,
....
);

ทดลองสร้างตาราง และกำหนดCONSTRAINT 

รูปที่1 แสดงการสร้างตาราง และ แสดงรายละเอียดของตาราง 

 จากรูปที่1จะเห็นว่า 
  • id ให้เป็น PRIMARY KEY  และไม่สามารถเก็บค่า null ได้
  • name และ lastname ไม่สามารถเก็บค่า null ได้
  • age กำหนดCONSTRAINT  โดยใช้คำสั่ง CHECK   ให้ข้อมูลที่ใส่ต้องมีค่ามากกว่า20
  • status กำหนดค่า DEFAULT ให้เป็น S

ทอลองใส่ข้อมูล

รูปที่2 แสดงการใส่ข้อมูล

 จากรูปที่2จะเห็นว่า 

  • ถ้าเราไม่กำหนดค่าใน column status database จะเก็บข้อมูลเป็น s ซึ่งเป็นค่า DEFAULT ที่เราได้ตั้งไว้
  • มีข้อผิดพลาดในการใช้ CONSTRAINT  โดยใช้คำสั่ง CHECK  เนื่องจากเรากำหนดให้ age>20 แต่ค่าที่เราใส่เค้าไปเป็น 19 *จะหาทางแก้ไขต่อไป



รูปที่3 แสดงการใส่ข้อมูล

จากรูปที่3จะเห็นว่า

  • ถ้าหากไม่ใส่ข้อมูลช่อง lastname จะไม่สามารถเพิ่มข้อมูลได้เนื่องจาก เรากำหนดCONSTRAINT ไม่ให้เก็บค่า null

รูปที่4 แสดงการใส่ข้อมูล

จากรูปที่4จะเห็นว่า

  • ในกรอบสีแดง เป็นการใส่ค่าที่มี id ซ้ำกับค่าที่อยู๋ table อยู่แล้ว ทำให้ไม่สามารถใส่ค่าไปยังตารางได้ เนื่องจาก id เป็น PRIMARY KEY ซึ่งค่าที่เก็บไว้นั้นไม่สามารถซ้ำกันได้
  • ในกรอบสีเขียว เป็นการใส่ค่า โดยที่ id ไม่ซ้ำกัน แต่ name กับ lastname ซ้ำ แต่ยังสามารถใส่ค่าได้ เพราะ name และ lastname ไม่ได้ถูกกำหนดให้เป็น UNIQUE

วันเสาร์ที่ 30 มกราคม พ.ศ. 2559

To Do week2(cont. Try MySQL)

 บทความนี้เป็นการนำเสนอการใช้งาน MySQL เบื่องต้น ต่อจาก บทความ To Do week2(Try MySQL)
ในบทความนี้จำนำเสนอ
1.วิธีการลบข้อมูลใน table
2.วิธีการUpdate ข้อมูล
3.วิธีการแก้ไขลักษณะของตัวแปรใน columns
4.วิธีการกำหนด  PRIMARY KEY

1.วิธีการลบข้อมูลใน table 
  เริ่มแรกให้เข้าไปใน database ที่มีตารางที่เก็บข้อมูลที่เราต้องการลบ 
รูปแสดงข้อมูลที่อยู่ใน table 
  หลังจากนั้นให้ใช้คำสั่ง delete from ชื่อtable(Vip) where ชื่อcolumn(name) =" Book";


รูปแสดงข้อมูลที่อยู่ใน table หลังจากลบข้อมูล "Book" ไปแล้ว

*ปัญหาที่พบคือ เลข id ที่ถูกลบไปจะไม่ถูกแทนที่ 

2.วิธีการUpdate ข้อมูล 
   โดยในที่นี้จะทำการ Update เบอร์โทรศัพท์ของ Teng โดยใช้คำสั่ง 
   update vip
   set phone="084-444-4444"
   where name= "Teng";

รูปแสดงข้อมูลที่อยู่ใน table หลังจากUpdate เบอร์โทรศัพท์ของ Teng

3.วิธีการแก้ไขลักษณะของตัวแปรใน columns
 เริ่มแรกรายละเอียดข้อมูลของ table Vip เป็นดังภาพ
 รูปแสดงรายละเอียดข้อมูลของ table Vip 

ในที่นี้ต้องการเปลี่ยนแปลง column phone โดยดำหนดให้เป็น null ไม่ได้โดยใช้คำสั่ง
ALTER TABLE vip CHANGE phone  phone varchar(100) not null;
รูปแสดงรายละเอียดข้อมูลของ table Vip 

4.วิธีการกำหนด  PRIMARY KEY 
   กำหนด  PRIMARY KEY สำหรับตารางที่เราได้สร้างไปแล้วนั้นมีการกำหนดPRIMARY KEY อยู่ก่อนแล้วคือ id 
รูปแสดงรายละเอียดของ table vip

โดยในที่นี้ต้องการกำหนดให้ phone เป็น PRIMARY KEY ต้องทำการลบ PRIMARY KEY ตัวเก่าออกก่อน
   โดยใช้คำสั่ง
ALTER TABLE vip
DROP PRIMARY KEY;
    

รูปแสดงรายละเอียดของการลบPRIMARY KEY 
แต่เนื่องจาก colomn  Id สามารถเป็น PRIMARY KEY ได้จากการนิยามค่าให้ตั้งแต่ตอนสร้างตารางทำให้ค่าไม่ซ้ำกัน จึงไม่สามารถลบออกจากการเป็นPRIMARY KEY  ได้

 จากคำสั่งที่ใช้สร้างตาราง Vip 
create table VIP (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
name VARCHAR(50),
phone VARCHAR(50));

 จะเห็นว่ามีการกำหนด PRIMARY KEY ไว้ตั้งแต่ต้นแล้ว หากการสร้างตารางไม่ได้กำหนด PRIMARY KEY เอาไว้และต้องการ กำหนดPRIMARY KEY ภายหลังให้ใช้คำสั่ง 
ALTER TABLE ชื่อtableADD PRIMARY KEY (ชื่อcolumn);





วันจันทร์ที่ 25 มกราคม พ.ศ. 2559

To Do week2(Try MySQL)

 หลังจากได้ศึกษาการใช้ SQL เบื้องต้น จาก http://www.w3schools.com/sql/ แล้ว ได้ศึกษาหาโปรแกรมที่ใช้ในการจัดการฐานข้อมูล หรือ DBMS  (ย่อมาจาก Database Management System)
 ในที่นี้ผู้ศึกษาได้เลือกใช้โปรแกรม MySQL (version 5.7.10) เป็น Open Source License สามารถ Download จาก http://dev.mysql.com/downloads/windows/installer/
 เมื่อทำการติดตั้งเสร็จแล้ว จะได้โปรแกรมดังรูป
รูปแสดง icon โปรแกรม command line MySQL

 จากนั้นเมื่อกดเข้าโปรแกรมให้ใส่รหัสที่เราได้ตั้งไว้
รูปแสดงโปรแกรมเมื่อใส่รหัสและพร้อมทำงาน 

 ทำการสร้าง database ของเรา ในที่นี้จะสร้าง database ชื่อ contact โดยใช้คำสั่ง create database ชื่อที่เราต้องการ(contact); และเรียกดู database ที่เรามีโดยใช้คำสั่ง show databases;
รูปแสดง เมื่อทำการสร้าง database และ show database แล้ว
 เมื่อต้องการแก้ไขข้อมูลใน database ให้ใช้คำสั่ง use ชื่อdatabase(contact); และกดโชว์ตารางที่มีอยู่ใน database นั้น โดยใช้คำสั่ง show tables; จะเห็นว่าไม่มีข้อมูลใดอยู่เลยจากรุปด้านล่าง
รูปแสดง เมื่อเลือกใช้ database และเรียกดู table ที่อยู่ในนั้น

 ทำการสร้างtable โดยใช้คำสั่ง 
create table VIP (id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
name VARCHAR(50),
phone VARCHAR(50));
ศึกษาชนิดของตัวแปรเพิ่มเติมจาก: http://www.w3schools.com/sql/sql_datatypes_general.asp 
เมื่อกดสร้างเสร็จให้เรา กด show tables; เพื่อจะดูว่ามี table อะไรบ้างที่อยู่ใน database นี้
รูปแสดงให้เห้นว่ามี table VIP ที่เราได้สร้างไว้แล้ว

 สามารถดูรายละเอียดชนิดของตัวแปลในแต่ละ column ได้โดยใช้คำสั่ง describe ชื่อตาราง(contact);

รูปแสดงรายละเอียดของ column  Table VIP

 เพิ่มข้อมูลในตารางโดยใช้คำสั่ง 
INSERT INTO vip (name, Phone)
VALUES ('Book','081-111-1111');
และเพิ่มข้อมูลไปเรื่อยๆ  และโชว์ข้อมูลในตารางโดยใช้คำสั่ง SELECT * FROM VIP;
รูปแสดงการเพิ่ม และโชว์ข้อมูลในตาราง VIP
หากต้องการลบตารางให้ใช้คำสั่ง drop table ชื่อตาราง(vip);

วันเสาร์ที่ 23 มกราคม พ.ศ. 2559

To Do week2(SQL Tutorial)

SQL Tutorial 

ศึกษาการใช้งาน SQL จากเว็บ http://www.w3schools.com/sql/

SQL Home
 SQL คือ ภาษาพื้นฐานที่ใช้ในการเข้าถึงและติดต่อกับฐานข้อมูล
 การศึกษาข้อมูล จาก http://www.w3schools.com/sql/ จะสอนวิธีการใช้ SQL เพื่อเข้าถึงและจัดการข้อมูล ใน MySQL, SQL Server, Access, Oracle, Sybase, DB2 และระบบฐานข้อมูลอื่น ๆ
 SQL Data Types for Various DBs : http://www.w3schools.com/sql/sql_datatypes.asp

SQL Intro
 What is SQL?
  SQL เป็นพื้นฐานโครงสร้างสำหรับ Query ช่วยให้เข้าถึงจัดการข้อมูลได้ และเป็นมาตรฐานANSI (American National Standards Institute)
 What Can SQL do?
  • สามารถสอบถามข้อมูลกับฐานข้อมูล
  • สามารถดึงข้อมูลจากฐานข้อมูล
  • สามารถเพิ่มบันทึกลงฐานข้อมูล
  • สามารถปรับปรุงเปลี่ยนแปลงฐานข้อมูล
  • สามารถลบข้อมูลบนฐานข้อมูล
  • สามารถสร้างฐานข้อมูลใหม่
  • สามารถสร้างตารางใหม่ในฐานข้อมูล
  • สามารถสร้างกระบวนการการจัดเก็บในฐานข้อมูล
  • สามารถสร้างมุมมองในฐานข้อมูล
  • สามารถกำหนดสิทธิ์ในการเข้าใช้ต่างๆ
SQL Syntax
 ใน database ส่วนใหญ่แล้วมักจะมีการเก็บข้อมูลเป็นตาราง  
รูปตัวอย่างแสดงการจัดเก็บข้อมูลใน database
 SQL Statements
  เป็นการจัดการข้อมูลในdatabase โดยจะสามารถเลือกข้อมูลทั้งหมดที่อยู่ใน table ที่สนใจ โดยใช้คำสั่ง  SELECT * FROM[tablename ที่เราต้องการเลือก]
รูปตัวอย่างแสดงการเลือกข้อมูลจาก database (มีtableทั้งหมด8tableสามารถดูได้ทางด้านขวา)
*การเขียนคำสั่ง SQL ไม่ต้องคำนึงถึงตัวพิมเล็กหรือใหญ่

SQL SELECT Statement
 เป็นวิธีการเลือกข้อมูลจาก database โดยใช้คำสั่ง
SELECT column_name,column_name FROM table_name; (ในกรณีที่ต้องการแค่บางcolumn)
SELECT * FROM table_name; (ในกรณีที่ต้องการทุก column จากตารางที่ระบุ)

รูปตัวอย่างการเลือกข้อมูลจาก ข้อมูล Customers table และเลือกแสดงข้อมูลแค่CustomerNameและCity
โดยใช้คำสั่ง SELECT CustomerName,City FROM Customers;

รูปตัวอย่างการเลือกข้อมูลจาก ข้อมูล Customers table และเลือกแสดงข้อมูลทั้งหมด
โดยใช้คำสั่ง SELECT * FROM customers;


SQL DISTINCT
 เป็นวิธีการเลือกข้อมูลที่ไม่ซ้ำกันจาก database โดยใช้คำสั่ง
 SELECT DISTINCT column_name,column_name FROM table_name;
 ในการศึกษานี้จะใช้ข้อมูลจากCustomers" table
 เมื่อพิมพ์คำสั่ง SELECT DISTINCT City FROM Customers; จะได้ผลลัพธ์ดังนี้
จากรูปจะเห็นว่าข้อมูลที่ได้มีทั้งหมด 69 records ซึ่งข้อมูล customers มีทั้งหมด 91 records

SQL WHERE
 เป็นวิธีการค้นหาข้อมูลตามที่ระบุไว้คล้ายๆกับการกรองข้อมูล โดยใช้คำสั่ง
SELECT column_name,column_name FROM table_name
WHERE column_name operator value;

จากภาพจะเห็นว่า เราค้นหาเฉพาะข้อมูลที่อยู่ใน Customers table ในColumn Country ที่มีคำว่าMexico
โดยใช้คำสั่ง
SELECT * FROM Customers WHERE Country='Mexico';

Operators in The WHERE Clause

OperatorDescription
=Equal
<>Not equal. Note: In some versions of SQL this operator may be written as !=
>Greater than
<Less than
>=Greater than or equal
<=Less than or equal
BETWEENBetween an inclusive range
LIKESearch for a pattern
INTo specify multiple possible values for a column
SQL AND & OR Operators
 เป็นคำสั่งที่ใช้ในการกรองข้อมูล โดยมีเงื่อนไข โดยจะแสดงข้อมูลเมื่อเงื่อนไขเป็นจริง
 AND จะแสดงเมื่อ2เงื่อนไขเป็นจริง or จะแสดงเมื่อเงื่อนไขใดเงื่อนไขหนึ่งเป็นจริง
 ตัวอย่างเช่น ใช้คำสั่ง AND
SELECT * FROM Customers
WHERE Country='Germany'
AND City='Berlin';

จะแสดง customers ที่อยู่ในประเทศGermany และอยู่ในเมืองBerlin
 ใช้คำสั่ง OR
SELECT * FROM Customers
WHERE City='Berlin'
OR City='Mannheim';
จะแสดง customers ที่อยู่ในอยู่ในเมืองBerlin หรือเมืองMannheim ทั้ง2เมือง
 หรือใช้ทั้ง AND OR 
SELECT * FROM Customers
WHERE Country='Germany'

AND (City='Berlin' OR City='Mannheim');
จะแสดง customers ที่อยู่ในประเทศGermany และอยู่ในเมืองBerlin หรือเมืองMannheim ทั้ง2เมือง แสดงดังรูป
รูปแสดงการใช้คำสั่ง AND OR

SQL ORDER BY Keyword

 เป็นคำสั่งที่ในการเรียงข้อมูลของผลลัพธ์ จากมากไปน้อย หรือจากน้อยไปมาก โดยใช้คำสั่ง
SELECT column_name, column_name
FROM table_name
ORDER BY column_name ASC|DESC, column_name ASC|DESC;

 โดย ASC ย่อมาจาก ascending คือ เรียงจากน้อยไปมาก DESC ย่อมากจาก descending คือ เรียงจากมากไปน้อยแต่ถ้าเราไม่ระบุชนิดของ ORDER BY column_name ASC|DESC ค่าเริ่มต้นที่กำหนดไว้คือ ASC

ทำการทดลองโดยใช้คำสั่ง
SELECT * FROM Customers
ORDER BY Country ASC, CustomerName DESC;


        
จากรูปจะเห็นว่า column Country จะเรียงข้อมูลแบบ ASC คือ AไปจนถึงZ และใน column CustomerName จะเรียงข้อมูลแบบ DESC คือ Z ไปยัง A

SQL INSERT INTO Statement

 เป็นคำสั่งที่ใช้ในการเพิ่มข้อมูลเข้าไปใน database เดิมโดยใช้คำสั่ง

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);


ทำกาทดลองโดยใช้คำสั่ง
INSERT INTO Shippers (ShipperName, Phone)
VALUES ('Book','123-456-789');

     
รูปแสดงข้อมูลของ Shippers table ก่อนที่จะเพิ่มข้อมูล


รูปแสดงข้อมูลของ Shippers table ที่เพิ่มข้อมูลแล้ว

SQL UPDATE Statement

 เป็นคำสั่งที่ใช้ในการแก้ไขข้อมูลที่มีอยู่แล้วใน database โดยใช้คำสั่ง
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;


ทำการทอลองโดยใช้คำสั่ง
UPDATE Shippers
SET ShipperName='Chananan', Phone='081-111-1111'
WHERE ShipperName='Book';


 รูปแสดงข้อมูลของ Shippers table 

 รูปแสดงข้อมูลของ Shippers table เมื่อมีการแก้ไขข้อมูลแล้ว

ข้อควรระวัง
 ถ้าลืมใส่ where ลงในคำสั่งจะทำให้เกิดการเปลี่ยนแปลงทุกค่าใน Column นั้นๆ ดังภาพด้านล่าง
รูปแสดงการแก้ไขค่า เมื่อไม่ใส่คำสั่ง where


SQL DELETE Statement

 เป็นคำสั่งที่ใช้ในการลบข้อมูลใน rows นั้นๆออกจาก table ในdatabase โดยใช้คำสั่ง
DELETE FROM table_name
WHERE some_column=some_value;

ทำการทดลองโดยใช้คำสั่ง
DELETE FROM Shippers
WHERE ShipperName='United Package' 
       
รูปแสดงข้อมูลShippers table ก่อนใช้คำสั่งDELETE

รูปแสดงข้อมูลShippers table หลังจากใช้คำสั่งDELETE  จะเห็นว่าข้อมูลShipperName='United Package'  ได้หายไป

หากต้องการลบข้อมูลทั้ง Table ใช้คำสั่ง
 DELETE FROM table_name; หรือ DELETE * FROM table_name;
ข้อควรระวัง เมื่อทำการลบข้อมูลแล้ว จะไม่สามารถย้อนกลับหรือยกเลิกได้

วันเสาร์ที่ 16 มกราคม พ.ศ. 2559

To Do week1 (GPA)

Enter your grades/transcript in a spreadsheet then calculate your GPA
ans: เก็บข้อมูลโดยใช้บริการของ google spreadsheet เนื่องจาก ง่ายต่อการเข้าถึงของ user และสามารถแชร์ข้อมูลให้ผู้อื่นได้สะดวกรวดเร็ว อีกทั้งยังมีความคล้ายคลึงกับ Microsoft excel ซึ่งทำให้สามารถเก็บข้อมูลได้อย่างเป็นระเบียบง่ายต่อการอ่านและมีสูตรต่างๆเพื่อช่วยในการคำนวณเกรดเฉลี่ย

ข้อมูลทีจัดเก็บมีดังนี้
-ปีการศึกษา/ภาคเรียน
-ชื่อ/รหัสวิชา
-หน่วยกิต
-ตอนเรียน
-เกรด

สูตรที่ใช้มีดังนี้
-แปลงเกรดจาก A,B+,B,C+,C,D+,D และ F ให้เป็น 4,3.5,3,2.5,2,1.5,1และ0 ตามลำดับเพื่อให้ง่ายต่อการคำนวณเกรดเฉลี่ย 
=IF(E3="A",4,IF(E3="B+",3.5,IF(E3="B",3,IF(E3="C+",2.5,IF(E3="C",2,IF(E3="D+",1.5,IF(E3="D",1,IF(E3="F",0))))))))


-หาผลรวมของหน่วยกิต
=SUM(C3:C10)

-หาค่าGPA โดยการนำผลคูณของหน่วยกิตกับเกรดเฉลี่ยในแต่ละเทอมมาบวกกันแล้วหารด้วยหน่วยกิตรวมทั้งหมด
=SUM(PRODUCT(E11,C11),E23*C23,E35*C35,E45*C45,E56*C56)/C57

Link: https://docs.google.com/spreadsheets/d/17z0YrV8baUtcw9KAvBYUKYcOk0--vReRuE2_FRiZ9bU/edit?usp=sharing

ภาพตัวอย่าง
ภาพตัวอย่างแสดงการเก็บข้อมูลผลการเรียน และคำนวณเกรดเฉลี่ย

Can we calcuate average GPA of all students?
ans: สามารถทำได้ ถ้านักเรียนทุกคนมีการจัดเก็บข้อมูลของ GPA ให้อยู่ในลักษณะ แบบฟอร์มเดียวกัน เพื่อให้ง่ายต่อการเขียนโปรแกรมเพื่อดึงข้อมูล GPA ของนักเรียนแต่ละคนมาคำนวณค่าเฉลี่ย

- Can we calcuate average grade of a subject?
ans: สามารถทำได้ แต่อาจจะมีความยากตรงที่ กลุ่มการศึกษาเปลี่ยนไปจากข้อข้างต้นที่ใช้ข้อมูลของนักศึกษาทั้งหมดทุกคน โดยในข้อนี้จะนำข้อมูลของนักศึกษาที่ลงเรียนในวิชานั้นๆมาคำนวณ หรือถ้าหากต้องใช้ข้อมูลชุดเดียวกัน อาจจะต้องใช้คำสั่งค้นหาคำเหมือน เพื่อหาจำนวนคนที่เรียนในวิชาที่เราต้องการหาเกรดเฉลี่ย และนำเกรดของแต่ละคนที่ลงเรียนวิชานั้น มาคำนวณ

ทำความรู้จัก CSV FILE

CSV ย่อมาจาก Comma Separated Value เป็นไฟล์ข้อความประเภทหนึ่งที่ใช้สำหรับเก็บข้อมูลในรูปแบบตาราง ใช้เครื่องหมายจุลภาค หรือคอมม่า (,) ในการแบ่งแต่ละคอลัมภ์  โดยปกติเราสามารถบันทึกไฟล์จาก Microsoft Excel ออกมาเป็น CSV ไฟล์ได้โดยตรง หรือ อาจได้ไฟล์ CSV จากการ export ไฟล์จากระบบฐานข้อมูลอื่นๆ

ภาพตัวอย่างการดาวน์โหลด CSV file จาก google spreadsheet


ภาพตัวอย่างCSV file เปิดโดยใช้โปรแกรม Microsoft excel


จุดเด่นของไฟล์ CSV File

-รองรับการใช้งานกับโปรแกรมฐานข้อมูลต่างๆ รวมทั้ง Microsoft Excel
-ไฟล์ที่ได้มีขนาดเล็กมาก
-รองรับการเปิดไฟล์ด้วยโปรแกรม Text Editor รวมทั้ง Microsoft Word

อ้างอิงจาก: http://www.technointrend.com/2015/10/csv-file/

ปัญหาที่พบ
-การดาวน์โหลดไฟล์ csv จาก google spreadsheet ไฟลที่ได้ไม่สามารถแสดงภาษาไทยได้