実行時に例外をスローしているDBテーブルから重複エントリを削除するには、次のファイル "dupeExtracter.rb"があります。DBテーブルから重複エントリを削除するRubyスクリプトSQLite3クエリで例外をスローする
それをデバッグしたり、それを修正する方法/Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/sqlite3-1.3.5/lib/sqlite3/database.rb:91:in `initialize': near "L": syntax error (SQLite3::SQLException)
from /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/sqlite3-1.3.5/lib/sqlite3/database.rb:91:in `new'
from /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/sqlite3-1.3.5/lib/sqlite3/database.rb:91:in `prepare'
from /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/sqlite3-1.3.5/lib/sqlite3/database.rb:134:in `execute'
from dupeExtracter.rb:22:in `block in <main>'
from dupeExtracter.rb:20:in `each'
from dupeExtracter.rb:20:in `<main>'
イムわからない:
require 'sqlite3'
db = SQLite3::Database.new('development.sqlite3')
db.results_as_hash = true;
#This query will return the lowest id of every entry that occurs more than once in the DB
#Entries that occur only once will NOT be in this resultset
#In other words this query will return the lowest id of every Duplicate in the DB
#It takes all these entries and populates the duplicates table with them
rows = db.execute("SELECT L1.* FROM listings L1
WHERE L1.id =
(SELECT MIN(L2.id) FROM Listings L2 WHERE
L1.name = L2.name
AND L1.telephone = L2.telephone
AND L1.latitude = L2.latitude
AND L1.longitude = L2.longitude)
")
rows.each do |row|
db.execute("DELETE FROM listings L
WHERE L.id <> row['id']
AND L.name = row['name']
AND L.telephone = row['telephone']
AND L.latitude = row['latitude']
AND L.longitude = row['longitude']
")
end
この は例外です。いくつかの方法を試しましたが、うまくいかないようです。
EDITを助けてくださいが示唆され、この下の答えの1の後、これに上記のループを変更しました。しかし、イムはまだ例外を取得:
rows.each do |row|
db.execute("DELETE FROM listings
WHERE id <> row['id']
AND name = row['name']
AND telephone = row['telephone']
AND latitude = row['latitude']
AND longitude = row['longitude']
")
例外:例外は、トークン「L」の近くに誤りがあります、そしてこのトークンのインスタンスが1つだけあなたのSQLにありますことを示しています
/Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/sqlite3-1.3.5/lib/sqlite3/database.rb:91:in `initialize': near "['id']": syntax error (SQLite3::SQLException)
from /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/sqlite3-1.3.5/lib/sqlite3/database.rb:91:in `new'
from /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/sqlite3-1.3.5/lib/sqlite3/database.rb:91:in `prepare'
from /Users/AM/.rvm/gems/ruby-1.9.2-p290/gems/sqlite3-1.3.5/lib/sqlite3/database.rb:134:in `execute'
from dupeExtracter.rb:22:in `block in <main>'
from dupeExtracter.rb:20:in `each'
from dupeExtracter.rb:20:in `<main>'
この質問に否定的な評価を与えた人は、少なくともこの評価を説明する礼儀を示すことができます。 – banditKing
私はそうではありませんでしたが、巨大なテキストを使用していたように見せかけるようなフォーマットになっていないと思います。 –
ありがとうございます、モデレータはちょっと悩ましいようです。私はこれに新しいので、まだ学習。ありがとう。 – banditKing