Crackstation'ın 1.5 milyar kelime listesini (15 gig) bir veritabanı tablosuna eklemeye çalışıyorum . SQLite ve Postgres'ı komut satırından bugüne kadar şanssız olarak denedim.
Her ikisi de, verilerin dosyaya dağılmış bazı ikili veri değerlerini içerdiğini görünce üzülür. Veri sadece UTF-8 karakter gibi gözükmüyor .
UltraEdit UTF-8 olarak algılar.
Ancak, linux dosya komutu diyor ki:
$ file crackstation.txt -I
crackstation.txt: application/octet-stream; charset=binary
Bu verileri Postgres veya SQLite'a nasıl aktarabilirim ki böylece analiz edebilir / sorgulayabilirim?
Veriyi ilk önce temizleyebilmem / dönüştürebilmemin bir yolu var mı, ek çalışsın mı ... yoksa farklı bir şekilde veri tabanına aktarımı yapıp çalışsın mı?
İşte denedim:
SQLite:
sqlite> .mode csv
sqlite> .separator "\n"
sqlite> .import crackstation.txt passwords
Buna verilen cevap milyonlarca unescaped " character
mesajdır ve tabloya sadece 1 satır eklenmiştir (bu sadece boş bir dize değeridir).
postgres:
psql> COPY passwords FROM 'crackstation.txt' WITH (FORMAT TEXT, NULL '', ENCODING 'UTF-8');
Buna verilen cevap, ERROR: invalid byte sequence for encoding "UTF8": 0xf6 blah blah
üzerinde bulunduğu satır numarasıdır. Sorun şu ki, txt dosyası 15 gig'dir, bu yüzden yalnızca UltraEdit'te açabildim ve hatta bu hatta bu çizgiye ulaşmak, silmek, psql komutunu tekrar çalıştırmak, durulamak ve tekrarlamak için acı verici bir şekilde yavaş Şimdi soruyu soruyorum.