รวบรวม Code ต่างๆนานา ที่เคยพบเจอมาจากประสบการณ์

UNDERGROUND PROGRAMMER PRESENT

วันพฤหัสบดีที่ 24 สิงหาคม พ.ศ. 2560

SQL SERVER#3 Read excel and insert to table

ช่วยเอาข้อมูลใน Excel ลง Database ให้หน่อยสิ

งานมาอีกแล้วทำไงดีหว่า เอาง่ายๆเลยไหม ก็เปิด Excel แล้วก็ Copy วางไปโลด แมะก็ง่ายไป 😀😀😀 ไม่ๆๆ คือต้องการทำผ่าน SQL Server อ่ะ เอาไงดี 
---- งั้นก็จัดไปตามคำเรียกร้อง ไหนๆทำไงบ้างนะ มาดูวิธีการทำกันดีกว่า

เตรียมสภาพแวดล้อมรอบข้างก่อนเลย อย่างไงอ่ะ !!!

เตรียมทำไม ? ไม่เตรียมได้ไหม !!!!

ก็ได้นะแต่มันจะ  Error แบบนี้ไง


"Cannot create an instance of OLE DB provider Microsoft.Jet.OLEDB.4.0 for linked server null"

ฉะนั้นก็จงทำตาม ดังนี้
1. ก็ต้องมี MS SQL SERVER กับ OFFICE ในเครื่องก่อนละ (มันจะทำก็ต้องมีแหละเนอะ 😷😠)
** เครื่องที่ผมใช้ในการทดสอบนี้ ลง MS SQL SERVER 2012, Office 2013

2. ก็ต้องติดตั้ง Data Connectivity Components ในเครื่องสะก่อนนะ (ก็ไอ่พวก Microsoft.Ace.OLEDB ไง)

** Download มาให้ถูกต้องละ 32 bit หรือ 64  bit ดูให้ดีนะ
เอาจากที่นี้อ่ะ: Microsoft Access Database Engine 2010

3. ก็ตรวจสอบชื่อ Log on เข้า MS SQL Server ด้วยว่ามีสิทธิการเข้าถึง Temp Directory ไหม (C:\Users\ชื่อผู้ใช้อ่ะ\AppData\Local\Temp ต้องไม่เช็คถูกที่ Read Only อ่ะ)
** ส่วนใหญ่ก็ชื่อที่เราเข้าใช้เครื่องเราอ่ะ ต้องมีสิทธิเป็น  Administrator นะ

4. ต้องทำการเปิด Config การทำงานกับ Microsoft.Ace.OLEDB ใน MS SQL Server เสียก่อนนะ ใช้คำสั่งข้างล่างนี้นะ


** ไอ่เจ้า parameter 'DynamicParameters' อาจจะไม่ใช่ชื่อนี้ก็ได้นะ ให้เข้าไปดูใน procedure sp_MSset_oledb_prop ดูก่อนนะ (มันจะอยู่ใน database master อ่ะตรง System Stored Procedures อ่ะ)


หรือลองตรวจสอบดูจาก Server Object - Linked Servers - Providers

หรือใช่คำสั่ง

EXECUTE MASTER.dbo.xp_enum_oledb_providers


5. ทำการลงทะเบียนไฟล์ msexcl40.dll วิธีการก็ ให้นำคำสั่งข้างล่างเนี๊ยไป Run/Search (คงไม่ต้องบอกนะว่าทำไง)

regsvr32 c:\Windows\SysWOW64\msexcl40.dll

6. จากนั้นก็ต้องใช้คำสั่งในการดึงข้อมูลออกมาละนะ



** อธิบายหน่อยละกัน สั้นๆ ก็ใช้คำสั่ง OPENROWSET ในการเรียกใช้งาน จากนั้นก็ใช้  Jet Database Engine เข้ามาใช้งานในการติดต่อกับ Excel ในส่วน  Database นั้นก็คือ ที่อยู่ของไฟล์ที่ต้องการนั่นละ ส่วน [A$] อันนี้คือชื่อ Sheet ใน Excel อ่ะนะ

Application Version = Jet Version

  • Microsoft Access 2003 = Jet 4.0
  • Microsoft Access 2007 = ACE 12
  • Microsoft Access 2010 = ACE 14 * เท่าที่ลองดูใช้ 12 ก็ยังได้อยู่นะ
  • Microsoft Access 2013 = ACE 15 * เท่าที่ลองดูใช้ 12 ก็ยังได้อยู่นะ


เอาละต่อไปก็จะเป็นการ Insert เข้าสู่ตารางเพื่อเอาไว้ทำข้อมูลต่างๆ นาๆ หรือนำไปทำอะไรก็แล้วแต่เหอะ 😊😊😊😊



จบคำสั่งจากนี้ไป จะทำไรกับข้อมูลก็สุดแล้วแต่....ละนะ! 🐵

1 ความคิดเห็น: