teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記・修正

2022/06/26 23:05

投稿

winterboum
winterboum

スコア23654

answer CHANGED
@@ -2,10 +2,13 @@
2
2
  rubyには OpenSSL::Digest::SHA256 というハッシュ化する lib があります。 Python3 は経験がないのでわかりませんが、きっと有るのでは?
3
3
  rubyでは 33千行、180MBの各行処理で0.1秒でした。
4
4
 
5
- これを用いて、1行DBへ入れる処理毎にハッシュを配列に入れておき比較する という方法はどうでしょう。
5
+ これを用いて、1行 処理する毎にハッシュを配列に入れておき比較する という方法はどうでしょう。
6
6
  配列サイズがどのくらいになるか、ですが、その探索にも高速化の工夫が必要でしょう。
7
7
  配列ではなく(ruby語の)Hash を使うと早いかも。
8
8
 
9
9
  なおこの方法の欠点は「CSVとしては同じ内容だが、文字列としては異なる」場合に重複検出ミスります。例えば 文字データが " でくくられてるか ' でくくられてるか とか。
10
10
 
11
11
  どの方法をとるにしても 重複確認が必要なので「その探索にも高速化の工夫」は必要ですが、提案の方法の良いところは 32Byte整数なので、文字列での比較よりはずっと高速です。
12
+
13
+ 追記
14
+ ハッシュの提案はあったのですね。失礼