ฉันพยายามแทรกwordlist 1.5 พันล้านรายการ (15gig) ของ Crackstationลงในตารางฐานข้อมูล ฉันได้ลองใช้ SQLite และ Postgres ทั้งคู่โดยไม่ต้องโชคผ่านบรรทัดคำสั่ง
ทั้งสองรู้สึกเสียใจที่ข้อมูลดูเหมือนจะมีค่าข้อมูลไบนารีบางส่วนที่กระจัดกระจายไปทั่วไฟล์ ข้อมูลดูเหมือนจะไม่ได้เป็นเพียงแค่ UTF-8 ตัวอักษร
UltraEdit ตรวจพบว่าเป็น UTF-8
อย่างไรก็ตามคำสั่งไฟล์ linux พูดว่า:
$ file crackstation.txt -I
crackstation.txt: application/octet-stream; charset=binary
ฉันจะนำข้อมูลนี้ไปใช้ใน Postgres หรือ SQLite เพื่อให้ฉันสามารถวิเคราะห์ / สืบค้นได้อย่างไร
มีวิธีที่ฉันสามารถล้าง / แปลงข้อมูลก่อนเพื่อให้การแทรกใช้งานได้ ... หรือวิธีอื่นที่ฉันสามารถนำเข้าสู่ฐานข้อมูลเพื่อให้ทำงานได้หรือไม่
นี่คือสิ่งที่ฉันพยายาม:
SQLite:
sqlite> .mode csv
sqlite> .separator "\n"
sqlite> .import crackstation.txt passwords
การตอบสนองต่อสิ่งนี้คือunescaped " character
ข้อความนับล้านและมีเพียง 1 แถวที่แทรกในตาราง (ซึ่งเป็นเพียงค่าสตริงว่าง)
Postgres:
psql> COPY passwords FROM 'crackstation.txt' WITH (FORMAT TEXT, NULL '', ENCODING 'UTF-8');
การตอบสนองต่อสิ่งนี้คือERROR: invalid byte sequence for encoding "UTF8": 0xf6 blah blah
ด้วยหมายเลขบรรทัดที่พบใน สิ่งนั้นคือไฟล์ txt มีขนาด 15gig ดังนั้นฉันจึงสามารถเปิดได้ใน UltraEdit เท่านั้นและถึงอย่างนี้มันก็ช้าไปที่บรรทัดลบลบเรียกใช้คำสั่ง psql ล้างและทำซ้ำ ... ดังนั้นทำไมฉัน ตอนนี้ถามคำถาม