วิธีการ load ข้อมูลจาก *.txt หรือ *.csv เข้า table มีหลายวิธี
Sql Loader เป็น วิธีนึงที่ถ้าทำเป็นจะคลิกทีเดียว และนั่งรอชิวๆ ไม่ต้องทำอะไร รอให้ import เสร็จ
สร้างโฟลเดอร์ ไว้สักทีเช่น D:\test sql loader\ จากนั้นนำไฟล์มาวางในโฟลเดอร์ 3 ไฟล์ ดังนี้
Control.txt
FileData.txt
BatSqlLoader.bat
หน้าตาของเนื้อไฟล์มีดังนี้
1. Control.txt
options (skip=1)
load data
infile 'D:\test sql loader\FileData.txt'
into table tb_Customer
fields terminated by "|"
optionally enclosed by '"' trailing nullcols
(X FILLER
,COD_CUST_ID
,COD_CUST_NATL_ID
,FLG_IC_TYP
,FLG_CUST_TYP
,FLG_TYP_CLASS
,FLG_EMP
,COD_ACCT_NO
,CUS_SGMT_INV
,CUS_SGMT_CORP
,COD_RM_DEP)
skip=1 คือ skip แถวแรกใน FileData.txt ไม่ต้องเอาเข้า table โดยมากเป็น column header จึง skip ออกไป ถ้าเราไม่มี header ก็ใช้ skip=0
into table tb_Customer ระบุชื่อตารางที่เราต้องการ insert ข้อมูลเข้าไป ในที่นี้คือ tb_Customer
fields terminated by "|" หมายถึง ใน FileData.txt เราจะคั่นแต่ละคอลัมน์โดยใช้ |
optionally enclosed by '" หมายถึง อนุญาติให้เนื้อ data ของแต่ละคอลัมน์ มีอักขระ ' ได้
trailing nullcols เนื้อ data ของแต่ละคอลัมน์เป็น null ได้
(X FILLER คือ คอลัมน์นี้ ไม่ต้อง map เข้ากับคอลัมน์อะไรเลย บน table
,COD_CUST_ID คอลัมน์ที่ 2 ใน FileData.txt ถูก map เข้ากับ tb_Customer.COD_CUST_ID
,COD_CUST_NATL_ID คอลัมน์ที่ 3 ใน FileData.txt ถูก map เข้ากับ tb_Customer.COD_CUST_NATL_ID ทำในลักษณะนี้ไปเรื่อยๆ
,FLG_IC_TYP
,FLG_CUST_TYP
,FLG_TYP_CLASS
,FLG_EMP
,COD_ACCT_NO
,CUS_SGMT_INV
,CUS_SGMT_CORP
,COD_RM_DEP)
2. FileData.txt หน้าตาของข้อมูลในไฟล์ ที่เราต้องการ import เข้า table
H|NBCS_IF_FCR_CUST|2017-09-18T19:18:56+07:00
D|236521|3740100456375|I|L|I|N||KKM||B04904
D|236522|3640407055081|I|L|I|N||KKM||B01418
D|236523|3101571564831|I|L|I|N||KKP||B03217
D|236524|3419970745575|I|L|I|N||KKPB3||B02328
D|236525|3160670653726|I|L|I|N||KKM||B04002
D|236526|1209607117531|I|L|I|N||KKM||B03208
D|236527|1769970072946|I|L|I|N||KKM||B03802
D|236528|3171800421382|I|L|I|N||KKPB2||B00702
D|236529|1461070081031|I|L|I|N||KKM||B02501
D|236530|1339907874060|I|L|I|N||KKM||B05301
D|236531|3369970029714|I|L|I|N||KKM||B01110
D|236532|3249970079801|I|L|I|N||KKM||B08202
3. BatSqlLoader.bat
sqlldr.exe CUSTOMER/[email protected]:1570/CUSTOMERDB control='Control.txt' log='Results.log' rows=500000 SILENT=ALL errors=200000
วิธีเรียกใช้
เปิด dos comanad หน้าจอดำๆ ขึ้นมา
cd D:\test sql loader\ กด enter
D:\test sql loader>BatSqlLoader.bat แล้วกด enter ระบบก็จะทำงานตามที่เรา confiure ไว้ที่ไฟล์ control.txt จนเสร็จ
oracle Sql loader
Moderator: mindphp
- jataz2
- PHP Super Member
- โพสต์: 275
- ลงทะเบียนเมื่อ: 22/02/2011 11:48 am
Re: oracle Sql loader
ถ้าไม่ได้ระบุ option errors จะมีค่า defalut อยู่ที่ 50
ซึ่งจะทำให้เพื่อนๆเจอปัญหาคือ มีข้อมูลใน textfile 2 แสน rows พอรันไปได้ไม่ว่าจะกี่แถวก็ตาม ถ้ามี error ครบ 50 แล้วมันจะหยุดการ import ข้อมูลเข้า database ทันที
ผมติดปัญหานี้อยู่นาน ไม่รู้ว่าทำไม จึงทดลองระบุ errors=200000 มันจึง import ข้อมูลเข้า database ทั้ง 2 แสน rows อาจมี error สัก 700 แต่ก็ทำไปได้ทั้งหมด ไม่หยุดทำงานไปซะก่อนจะครบทุก row
ซึ่งจะทำให้เพื่อนๆเจอปัญหาคือ มีข้อมูลใน textfile 2 แสน rows พอรันไปได้ไม่ว่าจะกี่แถวก็ตาม ถ้ามี error ครบ 50 แล้วมันจะหยุดการ import ข้อมูลเข้า database ทันที
ผมติดปัญหานี้อยู่นาน ไม่รู้ว่าทำไม จึงทดลองระบุ errors=200000 มันจึง import ข้อมูลเข้า database ทั้ง 2 แสน rows อาจมี error สัก 700 แต่ก็ทำไปได้ทั้งหมด ไม่หยุดทำงานไปซะก่อนจะครบทุก row
- jataz2
- PHP Super Member
- โพสต์: 275
- ลงทะเบียนเมื่อ: 22/02/2011 11:48 am
Re: oracle Sql loader
into table tb_Customer => เอาเข้าแบบ insert เข้าไป โดยในตาราง tb_Customer ต้องเป็นตารางเปล่าๆ ไม่มี row เลย จึงจะ run ได้
replace table tb_Customer => มนจะ auto trunate ตารางให้ก่อน จากนั้นเอาเข้าแบบ insert เข้าไป ไม่จำเป็นต้องเป็นตารางเปล่าๆ มี ข้อมูลอยุ่ในตารางได้ เพราะยังไงมันก็ truncate ก่อนอยู่แล้ว
replace table tb_Customer => มนจะ auto trunate ตารางให้ก่อน จากนั้นเอาเข้าแบบ insert เข้าไป ไม่จำเป็นต้องเป็นตารางเปล่าๆ มี ข้อมูลอยุ่ในตารางได้ เพราะยังไงมันก็ truncate ก่อนอยู่แล้ว
-
- Similar Topics
- ตอบกลับ
- แสดง
- โพสต์ล่าสุด
-
- 0 ตอบกลับ
- 2477 แสดง
-
โพสต์ล่าสุด โดย jataz2
08/11/2017 10:25 am
-
- 1 ตอบกลับ
- 2348 แสดง
-
โพสต์ล่าสุด โดย jataz2
19/08/2015 11:26 am
-
- 0 ตอบกลับ
- 1954 แสดง
-
โพสต์ล่าสุด โดย jataz2
24/10/2019 11:57 am
-
- 0 ตอบกลับ
- 1859 แสดง
-
โพสต์ล่าสุด โดย pnut
07/12/2016 4:14 pm
-
-
โพสต์ใหม่ .Net c# + Oracle วิธ๊ใช้ connection string
โดย jataz2 » 04/07/2019 11:30 am » ใน SQL - Database - 2 ตอบกลับ
- 1687 แสดง
-
โพสต์ล่าสุด โดย jataz2
05/07/2019 9:45 am
-
-
- 0 ตอบกลับ
- 1795 แสดง
-
โพสต์ล่าสุด โดย jataz2
28/11/2019 10:22 am
-
-
โพสต์ใหม่ สอบถามเรื่องการ select database oracle
โดย rangsun6342 » 31/10/2014 1:34 pm » ใน SQL - Database - 0 ตอบกลับ
- 4623 แสดง
-
โพสต์ล่าสุด โดย rangsun6342
31/10/2014 1:34 pm
-
ผู้ใช้งานขณะนี้
สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 78