การแทรก Wordlist ของ Crackstation ลงในตารางฐานข้อมูล


1

ฉันพยายามแทรก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 ล้างและทำซ้ำ ... ดังนั้นทำไมฉัน ตอนนี้ถามคำถาม

คำตอบ:


0

หากไฟล์นั้นไม่มีการเข้ารหัสที่ระบุไว้คุณอาจต้องการนำเข้าไฟล์ดังกล่าว

หากเป้าหมายเป็นฐานข้อมูลเฉพาะในกรณี PostgreSQL คุณสามารถสร้างได้โดยไม่ต้องบังคับใช้การเข้ารหัสใด ๆ

ในฐานะที่เป็นคำสั่ง SQL:

CREATE DATABASE dbname
  encoding 'SQL_ASCII'
  lc_collate= 'C'
  lc_ctype='C'
  template=template0;

ตารางที่สร้างขึ้นภายในฐานข้อมูลนั้นจะยอมรับไบต์ที่ไม่เป็นศูนย์โดยไม่ตรวจสอบว่าสอดคล้องกับอักขระในการเข้ารหัสใด ๆ หรือไม่ การเปรียบเทียบสตริงจะทำแบบไบต์

หากไฟล์นั้นมี nul bytes เช่นกันคุณจะต้องลบไฟล์เหล่านั้นด้วยการกรองไฟล์ด้วยtr -d '\0'หรือคำสั่งเทียบเท่าสำหรับระบบปฏิบัติการของคุณ

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