|
|
this ungodly mess returns:
city,city_ascii,lat,lng,country_id,region_id
It's a one-off query, I need to generate csv file for 2.5 million records so I can import into the db with foreign keys.
Any ideas? I think the loop for the sql queries is killing it.
<% @cities = City.find_by_sql "SELECT DISTINCT on (lat, lng) country, region, city, city_ascii, lat, lng FROM cities" %>
<% @cities.each do |city| %>
<%=city.city%>,<%=city.city_ascii%>,<%=city.lat%>,<%=city.lng%>,
<%@region = Region.find_by_sql "SELECT * FROM regions WHERE COUNTRY ~*'^#{city.country}$'
AND region ~*'^#{city.region}$'
LIMIT 1" %>
<% @region.each do |region| %>
<%=region.id%>,
<% end %>
<% @country = Country.find_by_sql "SELECT * FROM countries WHERE code ~*'^#{city.country}$'
LIMIT 1" %>
<% @country.each do |country| %>
<%=country.id%>
<% end %>
<% end %>
current db tables (these have auto-incrementing primary keys):
countries
:code,:name
A1,Anonymous Proxy,
A2,Satellite Provider,
AD,Andorra,
AE,United Arab Emirates,
AF,Afghanistan,
AG,Antigua and Barbuda,
AI,Anguilla,
AL,Albania,
AM,Armenia,
etc
regions
:country,:region,:name
CA,AB,Alberta
CA,BC,British Columbia
CA,MB,Manitoba
CA,NB,New Brunswick
CA,NL,Newfoundland
CA,NS,Nova Scotia
CA,NU,Nunavut
CA,ON,Ontario
CA,PE,Prince Edward Island
cities:
:country,:city,:city_ascii,:lat,:lng
ad,aixas,AixĂ s,06,42.4833333,1.4666667
ad,aixirivali,Aixirivali,06,42.4666667,1.5
ad,aixirivall,Aixirivall,06,42.4666667,1.5
ad,aixirvall,Aixirvall,06,42.4666667,1.5
ad,aixovall,Aixovall,06,42.4666667,1.4833333
objective:
city,city_ascii,lat,lng,country_id,region_id
above code accomplishes this when limited to one country, but the query is too large when done for all countries.
|