วิธีนำไฟล์ผ่านหลังจากวันที่กำหนดเมื่อใช้ SSIS Foreach Loop Container

ปัจจุบันสร้างแพ็คเกจ SSIS ที่จะผ่านโฟลเดอร์และนำไฟล์ล่าสุดกลับมาขึ้นอยู่กับชื่อไฟล์ ฉันทำสิ่งนี้โดยใช้คอนเทนเนอร์ Foreach Loop

ในการทดสอบมันทำงานได้ดี ฉันใช้ไฟล์ประมาณ 20 ไฟล์ ทั้งหมดทำงานได้ดี อย่างไรก็ตาม เมื่อพยายามใส่สิ่งนี้ลงในสภาพแวดล้อมจริงซึ่งมีไฟล์มากกว่า 200+ ไฟล์ มันล้มเหลวเนื่องจากไฟล์เก่ามีการเปลี่ยนแปลงเล็กน้อย ซึ่งเป็นสิ่งที่ฉันไม่รู้เมื่อสร้างแพ็คเกจครั้งแรก

ฉันต้องนำไฟล์ผ่านจริงๆ เท่านั้น ตั้งแต่วันที่ 01/03/2020 เป็นต้นไป แต่ไม่สามารถลบไฟล์เก่าออกจากตำแหน่งได้

มีวิธีแก้ไขแพ็คเกจให้นำไฟล์กลับเฉพาะตั้งแต่วันนี้เป็นต้นไปหรือไม่? แล้วถ้าเป็นเช่นนั้นฉันจะทำอย่างไร?

เชียร์ล่วงหน้าครับ


person Wil-Liam    schedule 01.09.2020    source แหล่งที่มา
comment
20200301 อยู่ในชื่อไฟล์ใช่ไหม   -  person billinkc    schedule 01.09.2020
comment
ไม่ใช่แค่วันที่ใน SQL เท่านั้น ถูกลบออกเพื่อหลีกเลี่ยงความสับสนเพิ่มเติม   -  person Wil-Liam    schedule 01.09.2020
comment
ฉันไม่ได้ติดตาม - หากวันที่ไม่อยู่ในชื่อไฟล์และรูปแบบของไฟล์เปลี่ยนไประหว่างวันที่ยุคนั้น คุณจะบอกได้อย่างไรว่าอะไรอยู่ในขอบเขตสำหรับการประมวลผลและอยู่นอกขอบเขต   -  person billinkc    schedule 01.09.2020
comment
ไม่เป็นไร ฉันจัดเรียงมันในตอนท้าย ฉันสร้างตารางสำหรับตรวจสอบและแทรกชื่อไฟล์ทั้งหมดลงในนั้นด้วยตนเอง ดังนั้นตอนนี้มันจะข้ามมันทั้งหมดไปยังไฟล์ที่ฉันต้องการ ขออภัยด้วย ฉันไม่ได้อ่าน ความคิดเห็นของคุณถูกต้อง วันที่อยู่ในชื่อไฟล์ ตัวอย่างเช่น ชื่อไฟล์อยู่ในรูปแบบ 'File_Name_2017-01-01' ดังนั้นฉันจึงรู้ว่าต้องข้ามไฟล์ไหน แต่ก็ไม่แน่ใจว่าต้องทำอย่างไร แต่ตารางสำหรับตรวจสอบว่าไฟล์ถูกโหลดหรือไม่ทำงาน   -  person Wil-Liam    schedule 01.09.2020


คำตอบ (1)


คุณสามารถใช้คุณสมบัติไฟล์เพื่อรับไฟล์ล่าสุดเพื่อประมวลผล:

var directory = new DirectoryInfo("C:\\MyDirectory");
var myFile = directory.GetFiles()
             .OrderByDescending(f => f.LastWriteTime)
             .First();

คุณสามารถเพิ่มตำแหน่งในนั้นได้:

var myFile = directory.GetFiles()
             .Where(f=>f.LastWriteTime>=DateTime.Parse("1/3/2020"))
             .OrderByDescending(f => f.LastWriteTime)
             .First();
person KeithL    schedule 01.09.2020
comment
ขอบคุณ @KeithL สิ่งที่ฉันสร้างขึ้นใช้ได้ผลในตอนนี้ แต่เมื่อฉันมีเวลามากขึ้น ฉันจะทดสอบดู! ขอบคุณสำหรับการโพสต์ - person Wil-Liam; 10.09.2020