ArcGIS ไม่สามารถนำเข้าบันทึกทั้งหมดจากไฟล์ CSV ขนาดใหญ่ไปยังตารางฐานข้อมูลไฟล์แม้จะอยู่ในขีด จำกัด ขนาดตาราง FGDB


11

ฉันใช้ ArcGIS 10.0 บน Windows 7 64 บิตพร้อม RAM 4GB

ฉันมีตารางที่มีขนาดใหญ่มากในรูปแบบ CSV เพื่อนำเข้าสู่ ArcGIS พวกเขาทั้งหมดมีประมาณ 30 เขตข้อมูลสูงกว่า 5 ล้านระเบียนต่อตาราง ฉันกำลังพยายามนำเข้าแต่ละไฟล์ลงในไฟล์ Geodatabase เป็นตารางแยกดังนั้นในที่สุดฉันก็สามารถเชื่อมโยงพวกเขาไปยังคลาสคุณลักษณะและวิเคราะห์ผลลัพธ์ในตารางตามตำแหน่งของพวกเขา

ปัญหาคือว่า ArcGIS ดูเหมือนจะเพิ่งออกจากการนำเข้าบันทึก ณ จุดหนึ่ง ฉันใช้เครื่องมือ "Table to Table" ใต้ Conversion> เป็น Geodatabase แต่เครื่องมือ "Copy Rows" มีปัญหาเดียวกัน แม้ว่าฉันเพิ่งจะเพิ่มไฟล์ CSV ลงใน ArcGIS โดยตรงโดยไม่พยายามแปลงเป็นตาราง FGDB ก่อนปัญหาก็เหมือนกัน หนึ่งในตารางของฉันมีระเบียนประมาณ 11 ล้านรายการและ ArcGIS นำเข้าเพียงประมาณ 10 ล้านรายการ ArcGIS ไม่ได้บอกฉันว่ามีข้อผิดพลาดเกิดขึ้นเครื่องมือเพิ่งจะเสร็จสิ้นราวกับว่าไม่มีอะไรผิดปกติ

ฉันลองตอนนี้สองสามครั้งแล้วและจำนวนระเบียนที่ทำให้มันลงในตาราง FGDB นั้นเหมือนกันเสมอและดูเหมือนจะไม่ จำกัด ขนาดไฟล์ที่ฉันเคยได้ยินมา (ไม่ใช่สแควร์ 2 หรือ 16) ArcGIS สามารถนำเข้า CSV อีกประมาณ 6 ล้านเรคคอร์ดและบันทึกทั้งหมดมาถึง (แม้ว่าจะมีปัญหาเกี่ยวกับตารางที่ใหญ่กว่า แต่อันที่เล็กกว่าก็เป็นที่สงสัยเช่นกัน) เว็บไซต์ของ ESRI แสดงรายการข้อ จำกัด ขนาดต่อไปนี้ในฐานข้อมูลไฟล์และฉันก็ไม่ได้กดปุ่มใด ๆ เลย:

  • ขนาดไฟล์ฐานข้อมูลภูมิศาสตร์: ไม่ จำกัด
  • ขนาดคลาสของตารางหรือคุณลักษณะ: 1 TB (ค่าเริ่มต้น), 4 GB หรือ 256 TB พร้อมคำหลัก
  • จำนวนคลาสและคุณลักษณะของตาราง: 2,147,483,647
  • จำนวนเขตข้อมูลในคลาสหรือตารางคุณลักษณะ: 65,534
  • จำนวนแถวในคลาสหรือตารางคุณลักษณะ: 2,147,483,647
  • ความยาวชื่อฐานข้อมูลภูมิศาสตร์: จำนวนอักขระที่ระบบปฏิบัติการอนุญาตในโฟลเดอร์
  • คลาสของคุณลักษณะหรือความยาวชื่อตาราง: 160 อักขระ
  • ความยาวชื่อฟิลด์: 64 ตัวอักษร
  • ความกว้างของฟิลด์ข้อความ: 2,147,483,647

ทั้งหมดที่ฉันต้องทำในตารางเหล่านี้คือการเพิ่มเขตข้อมูลคู่ลบคู่อื่น ๆ และสร้างค่าสำหรับเขตข้อมูลใหม่ (ผลรวมของเขตข้อมูลที่มีอยู่ไม่กี่แห่ง) ฉันใช้ ArcGIS เพราะฉันคุ้นเคยกับเครื่องคำนวณภาคสนามและฉันรู้ (หรือรู้จนถึงตอนนี้) ว่าสามารถจัดการตารางที่ประกอบด้วยระเบียนนับล้านในขณะที่ซอฟต์แวร์เดสก์ท็อปอื่น ๆ ที่ฉันมีประโยชน์ (MS Access / Excel ) ทำให้หายใจไม่ออกบนบันทึกจำนวนมาก ดังนั้นฉันจึงเปิดให้ใช้ซอฟต์แวร์อื่น ๆ เพื่อจัดการตารางต้นฉบับจากนั้นส่งออกตารางผลลัพธ์ (เล็กกว่า) ไปยัง ArcGIS ความจริงที่ว่าฉันมีปัญหานี้และ ArcGIS ไม่ได้ให้ข้อผิดพลาดหรือคำเตือนใด ๆ แก่ฉันว่าปัญหายังเกิดขึ้นทำให้ฉันต้องการจัดการข้อมูลนี้นอก ArcGIS ให้มากที่สุด


2
หาก "จำนวนระเบียนที่ทำให้ลงในตาราง FGDB นั้นเหมือนกันเสมอ" จากนั้นฉันจะดูระเบียนสุดท้ายและระเบียนถัดไปเพื่อดูว่าพวกเขาอาจมีบางสิ่งบางอย่างในระเบียนที่ดูไม่สอดคล้องกันเมื่อเทียบกับล้านที่นำเข้ามาก่อนหน้านี้
PolyGeo

1
ความคิดที่ดี. ฉันไม่เห็นความแตกต่างระหว่างบันทึกล่าสุดในตาราง FGDB ที่ถูกตัดทอนและบันทึกหลังจากนั้น (จาก CSV) ฉันเพิ่งลองลบระเบียนที่นำเข้าสำเร็จทั้งหมดจากแหล่ง CSV แล้วนำเข้าส่วนที่เหลือไปยังตาราง FGDB อื่นและใช้งานได้ ดังนั้นจึงไม่มีปัญหากับบันทึกใด ๆ เลย เพื่อทำให้สิ่งเลวร้ายยิ่งขึ้นฉันรวมตาราง FGDB สองตาราง (ระหว่างสองตารางนั้นฉันมีระเบียนแหล่งที่มาทั้งหมด) และ ArcGIS อ้างว่าทุกอย่างเป็นไปด้วยดีอีกครั้ง แต่ตารางที่ผสานนั้นมีเพียง 9.6 ล้านจาก 10.9 ล้านระเบียนของทั้งสอง ตาราง FGDB
Dan C

คุณเปิดเหตุการณ์การสนับสนุนกับ ESRI หรือไม่ ดูเหมือนว่า ณ จุดนี้คุณได้ค้นพบสิ่งที่อาจเป็นปัญหาที่ร้ายแรง หากไม่มีอะไรอื่นเจ้าหน้าที่ฝ่ายสนับสนุนจะสนใจที่จะรู้เพียงเพราะพวกเขาอาจรู้วิธีแก้ไขปัญหาหรือยินดีที่จะช่วยทดสอบ
Spatial

ฉันเห็นด้วยกับ Get Spatial แต่การทดสอบครั้งสุดท้ายที่คุณอาจต้องการเรียกใช้คือการสร้างไฟล์ CSV ที่มีหนึ่งฟิลด์ที่คุณใส่ค่าที่เหมือนกัน (อาจเป็น "การทดสอบ") หากทฤษฏีของคุณคือ 9.6 ล้านเป็นจำนวนสูงสุดขีด จำกัด นี้จะถูกใช้เมื่อมีการทดสอบ "10 ล้านบรรทัด" แต่จะไม่ใช้เมื่อมี 9.5 ล้านบรรทัด
PolyGeo

ตอนนี้ฉันได้ลองกับ CSV ที่แตกต่างกัน แต่ก็มีขนาดใหญ่ (มากกว่า 10 ล้านเรคคอร์ด) และมันก็ล้มเหลวในลักษณะเดียวกัน แต่ในบรรทัดที่ต่างออกไป ดังนั้นจึงดูเหมือนจะไม่เป็นจำนวนระเบียนที่เฉพาะเจาะจงหรือขนาดตารางที่เฉพาะเจาะจง ฉันจะลองทดสอบ CSV ด้วยสองช่องและดูว่าเกิดอะไรขึ้น ฉันจะโทรหา ESRI ในวันจันทร์ทั้งๆที่กระบวนการนี้ล้มเหลวโดยไม่มีข้อความแสดงข้อผิดพลาดเป็นที่ยอมรับไม่ได้และสร้างแม้กระทั่งบันทึกที่ทำให้สงสัย
Dan C

คำตอบ:


9

ฉันโทรหาฝ่ายสนับสนุน ESRI เกี่ยวกับเรื่องนี้และคำตอบของพวกเขาก็ไม่ได้ให้กำลังใจ แต่มันอธิบายปัญหา การถอดความ ESRI: ปัญหาคือ ArcGIS Desktop ซึ่งเป็นซอฟต์แวร์ 32- บิตนั้น จำกัด การใช้ RAM 4GB ได้มากที่สุด ไฟล์ข้อความจะต้องได้รับการประมวลผลใน RAM ก่อนที่จะถูกจัดเก็บเป็นตารางดังนั้นในระหว่างการประมวลผล ArcGIS ได้กดปุ่มขีด จำกัด RAM และหยุดที่นั่น ไฟล์ที่ฉันนำเข้ามีขนาดประมาณ 6GB เห็นได้ชัดว่าความจริงที่ว่ามันล้มเหลวโดยไม่ให้ข้อความแสดงข้อผิดพลาดซ้ำกับฉันฉันพยายามให้คนอื่น ๆ ในสำนักงานทำและการนำเข้ายังคงล้มเหลว แต่มันก็ส่งข้อความแสดงข้อผิดพลาด ผู้ใช้รู้ว่ามีบางอย่างผิดพลาด) และตัวแทน ESRI กล่าวว่าควรให้ข้อผิดพลาด

โซลูชันของฉันคือแบ่งไฟล์ออกเป็น CSV ขนาดเล็กสองไฟล์โดยใช้โปรแกรมแก้ไขข้อความ (ฉันใช้ EditPad Pro) นำเข้าแต่ละไฟล์ลงใน FGDB เป็นตารางแยกต่างหากจากนั้นผสานสองตาราง FGDB เข้าด้วยกัน ด้วยเหตุผลบางอย่างสิ่งนี้ล้มเหลวในครั้งแรกที่ฉันลองใช้ แต่ทำงานในภายหลัง ฉันอาจจะลองทดสอบมันอีกสักหน่อยฉันจะจัดการกับไฟล์ขนาดนี้อย่างต่อเนื่อง

ฉันใช้ ArcGIS 10.0 แต่ ArcGIS 10.1 service pack 1 เพิ่งเปิดตัวและเพิ่มความสามารถในการใช้ตัวประมวลผลพื้นหลัง 64 บิตซึ่งจะทำให้ตัวประมวลผลทางภูมิศาสตร์ใช้ RAM 4GB มากกว่าซึ่งอาจแก้ไขปัญหานี้ได้ แต่ฉันไม่สามารถ ทดสอบว่า

อัปเดต: ตอนนี้ฉันกำลังใช้ ArcGIS 10.1 SP1 (ด้วยส่วนเสริมการประมวลผลทางพื้นหลัง 64 บิต) และมันนำเข้ายักษ์ใหญ่เหล่านี้. CSV อย่างน้อยอย่างที่ฉันเคยทำมาจนถึงตอนนี้ บนเครื่องที่มี RAM ขนาด 14GB (ใช่, 14), 6GB .CSV ที่มีประมาณ 10.5 ล้านแถวสามารถนำเข้าตาราง FGDB ได้สำเร็จ


1
ฉันอยากรู้ว่าคุณจะลองใช้มันในรุ่น 64 บิตของ GDAL ได้ไหม ฉันพนันได้เลยว่ามันจะทำงานได้ดี
Ragi Yaser Burhum

7

สำหรับการโหลดข้อมูลการอ่านไฟล์ CSV ขนาดใหญ่ลงในหน่วยความจำนั้นค่อนข้างงี่เง่า มันจำเป็นต้องอ่านครั้งละ 1 บรรทัดเท่านั้น

ฉันขอแนะนำให้เขียนสคริปต์ Python และใช้csvโมดูลเพื่ออ่านมันทีละบรรทัดและแทรกแถวลงในตารางโดยใช้InsertCursor(หรือดีกว่าarcpy.da.InsertCursorเพราะมันเร็วกว่า แต่มีเฉพาะที่ 10.1)

แก้ไข:เพียงอ่านย่อหน้าสุดท้ายของคุณ ดูเหมือนว่าคุณสามารถทำสิ่งนี้ภายใน Python ได้อย่างง่ายดายแม้แต่การส่งออกผลลัพธ์กลับเป็น CSV หรือรูปแบบอื่น ๆ

หากคุณสามารถอธิบายสิ่งที่คุณต้องทำกับแต่ละแถวและคอลัมน์ที่จะเป็นประโยชน์


4

คุณได้ลองแบ่งไฟล์ 5GB csv ออกเป็นขนาดเล็กหรือไม่

มีเครื่องมือในการแบ่ง csv ตามแถวหรือจำนวนไฟล์

แยกไฟล์แล้วลองนำเข้า .. แต่มีข้อ จำกัด ในเครื่องมือนี้ฉันคิดว่ามันจะใช้ได้เฉพาะกับตารางในไฟล์เท่านั้น (ฉันคิดอย่างนั้น) pls ลองดู

http://www.shivaranjan.com/2008/11/06/how-to-split-csv-file-into-multiple-parts-easily-and-quickly/


ฉันวางแผนที่จะลองว่าถ้าฉันต้องทำมี CSV ไม่มากที่จะจัดการกับดังนั้นฉันอาจจะแยกพวกเขาด้วยตนเองด้วยโปรแกรมแก้ไขข้อความของฉัน ฉันยังคงต้องการทราบว่ามีใครมีปัญหานี้หรือไม่ถ้า ArcGIS กำลังสร้างความเข้าใจผิดเกี่ยวกับตารางขนาดใหญ่และไม่ได้รับความอนุเคราะห์จากผู้ใช้ทั่วไปในการส่งข้อความแสดงข้อผิดพลาดที่ไร้ประโยชน์นั่นจะเป็นปัญหา
Dan C

ตกลงฉันเพิ่งลองทำสิ่งนี้และมันได้ผล หลังจากแยก CSV ออกเป็นสองอันเล็ก ๆ (ด้วยตนเองพร้อมโปรแกรมแก้ไขข้อความ) พวกเขานำเข้าเรียบร้อยแล้วไปยังตาราง FGDB สองตารางที่แยกจากกันและบันทึกทั้งหมดจะอยู่ที่นั่น แต่เมื่อฉันพยายามรวมตาราง FGDB ทั้งสองนี้เข้าด้วยกัน ArcGIS จะทำงานอีกครั้งราวกับว่าไม่มีอะไรผิดปกติจากนั้นตารางที่ผสานจะหายไป 1.3 ล้านบันทึก
Dan C

2

ฉันพบข้อผิดพลาดนี้ (001156) ในบรรทัดเดียวกันของไฟล์ข้อความที่คั่นด้วยไพพ์ขนาดใหญ่ (2,712,391) แถวประมาณหนึ่งในสี่ของการผ่าน
ดังนั้นฉันคิดว่ามีบางอย่างผิดปกติกับบรรทัดนั้น แต่มันก็เหมือนกับส่วนที่เหลือของแถว
ฉันสิ้นสุดการลบแถวออกจากการนำเข้าบางส่วนแล้วโหลดข้อมูล (โหลด> โหลดข้อมูล ... ) และสามารถรับสาย 2M + ทั้งหมดได้

ฉันก็กำลังใช้การประมวลผลพื้นหลัง 10.1 SP1 w / 64 บิตบน RAM 16 GB และเป็นกระบวนการที่จะใช้ RAM (ไม่ใช่ทุกกระบวนการเปิดใช้งานใน 64 บิต)
ช้าแก้ปัญหา klunky แต่ทำงานได้อย่างต่อเนื่อง
คุณอาจต้องตั้งค่าตารางว่างก่อนถ้าคุณไม่ประสบความสำเร็จกับการนำเข้าในระดับใด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.