Import .sql ไฟล์ into MS-Access
กระทู้เก่าบอร์ด อ.Yeadram

 3,782   3
URL.หัวข้อ / URL
Import .sql ไฟล์ into MS-Access

ถึงคราวต้องถามเองบ้างแล้ว 555 หาในอากู๋เท่าไหร่ก็ไม่เจอ
ผมมีไฟล์ .sql (มาจากการทำ sql database publishing อะไรประมาณนี้)
ซึ่งมันเป็น data จากฐานข้อมูล
ต้องการจะ import มันเข้าในฐานข้อมูล MS-Access
ต้องทำยังไงครับ มีใครเคยทำบ้างครับ

3 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R06400
ถ้า sql เขียนต่อกันด้วยสายอักขระยาวๆ อย่างที่ใช้กับ ฐานข้อมูลใหญ่ๆ อาจจะไม่สะดวกในการนำเข้า Access ครับ
อาจต้องใช้วิธีการ ตัดทอนสายอัขระก่อนแล้วค่อยนำเข้า ด้วยการ Execute ของตัว connection
สายอักขระ SQL ที่ export มาจากโปรแกรมอื่นๆ หรือมาจาก ฐานข้อมูลชนิดอื่นๆ อาจจะอยู่ในรูปแบบที่ ADO อ่านไม่ออกก็ได้ คุณอาจต้องใช้ connection แบบ DAO หรืออาจต้องปรับรูปแบบสายอักขระเหล่านั้นก่อน
เช่น สายอักขระที่ dump มาจาก MySQL เขียนว่า

Insert Into tabl1(fiel1,field2,field3) values
(1, 0, "นาย"),
(2, 0, "นาง"),
(3, 0, "ดร.");

สังเกตเห็นไหมครับว่า เขาสามารถ Execute เพียงครั้งเดียวโปรยข้อมูลเข้าได้ถึง 3 เรคคอร์ด

แต่ ADO connection จะทำไม่ได้ (เท่าที่เคยลองมานะครับ)
ถ้าจะให้ ADO ทำได้ในงานเดียวกันนี้ คุณต้องปรับเปลี่ยน เขียนสายอักขระชุดนี้ใหม่เป็นดังนี้
ชุดที่ 1   Insert Into tabl1(fiel1,field2,field3) values (1, 0, "นาย");
ชุดที่ 2   Insert Into tabl1(fiel1,field2,field3) values (2, 0, "นาง");
ชุดที่ 3   Insert Into tabl1(fiel1,field2,field3) values (3, 0, "ดร.");
เวลาสั่ง Execute ก็ต้องสั่งครั้งละชุด ถึงจะได้ ครบทุกเรคคอร์ด


- ใช้โค้ดไล่ตรวจสอบสายอักขระ ถ้าจำเป็นต้องตัดทอน ก็แบ่งมันเข้า array เตรียมไว้เป็นท่อนๆ
- ใช้โค้ดสร้างตัว connection
- วนลูปให้ Connection ทำการ Execute ไปทีละท่อน

โค้ดดังกล่าว อาจจะเขียนโดย VBS เขียนขึ้นจาก notepad เซฟเป็น VBS แล้วค่อยรัน
หรือถ้าไม่คล่องการเขียนใน notepad (ไม่มีเครื่องมือช่วยเขียน ไม่มีตัว list) ก็อาจจะเขียนใน VBA (อาจจะสร้าง mdb ตัวเปล่าๆ สร้างโมดูล แล้วเขียนโค้ดในนั้น มันจะมี list ช่วยเขียนได้ดีกว่า)
หรืออาจจะเขียนด้วย VBA ใน mdb ตัวเป้าหมายเลยก็ได้

ถ้ามันมีข้อมูลมากๆ ก็ต้องลองคำนวนเอาครับว่า จะใช้ โค้ดไล่ตรวจไล่แปลงตัดทอนเอาเอง หรือจะลองค้นหาโปรแกรมสำเร็จรูปที่คนอื่นเขาทำไว้แล้วจะเร็วกว่า, จะง่ายกว่าไหม โดยหลักการของโปรแกรมพวกนั้นก็คงจะคล้ายๆ กันอย่างนี้แหละครับ คือต้องแปลงสายอักขระ หรืออาจต้องไล่เปลี่ยน คีย์เวอร์ดในสายอักขระให้หมดก่อน แล้วค่อยสั่ง Execute

สำหรับผมเองถ้าเจออย่างนี้ (ผมเขียนโค้ดเองแน่นอนครับ สนุกดี อิอิ)
2 @R06401
ขอบคุณมากครับ คุณ yeadram สำหรับคำแนะนำ
คงต้องไปหาวิธีการอื่นแล้วละครับ คือไฟล์ที่ว่านี้ผมนำมาจาก
การทำแบคอัพฐานข้อมูล sql server ด้วยวิธีการ publishing อะไรเนี่ยแหละ
ผมก็ไม่ถนัดในเรื่อง sql server อาศัยลองหาๆ ดูในอากู๋
พอทำแบคอัพได้ ก็เลยลองคิดดูว่า ถ้านำมาเข้า MS-Access จะได้มั๊ย
เผื่อในกรณ๊ที่ยูสเซอร์ต้องการดูข้อมูลที่ทำแบคอัพเก็บเอาไว้
ขอบคุณครับ
3 @R06447
ลอง?ช้ SSMA หรือ ทำ Link Database มาที่ Access

โดยใช้ ODBC connect แล้ว ใช้ copy and paste เลือก Local ก็จะได้ Access table แล้ว
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2640s