ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Datenbank befüllen
BeitragVerfasst: 26 Mai 2014, 12:03 
Offline
Nuby

Registriert: 23 Sep 2008, 07:47
Beiträge: 4
Hallo,

ich habe eine Masse an Daten, die ich initial und auch mit dem Deployment direkt in die Datenbank befüllen will.
Lokal mache ich das derzeit über einen einfachen mysql insert, aber auf dem Produktionsserver funzt das nicht, dort würde ich das gerne über eine Migration machen, aber genau da breche ich mit einen ab.



1
2
3
4
5
6
7
8
9
10

require 'csv'
require 'mysql2'
db = Mysql2::Client.new(:host => "localhost", :username => "dbuser", :password => "asdfghjk", :database => "sp_development")
file = CSV.read("DE.txt", { :col_sep => "\t" })
file.each do |row|
values = row.inject([]){|k,v| k<<"'#{v}'";k}.join(',')
db.query("insert into cities(country_code, postal_code, place_name, state_long, state_krzl, admin_code, admin_long, admin_code3, admin_long3, latitude, longitude, accuracy) values(#{values})")
end
db.close


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Datenbank befüllen
BeitragVerfasst: 26 Mai 2014, 13:31 
Offline
Interpreter

Registriert: 10 Dez 2007, 17:37
Beiträge: 1906
In einer Migration sollte man nur vorhandene Datensätz ändern. Für das initiale Laden von Daten ist die seeds.rb gedacht.
Einen kurzen Überblick gibt dieser Blog-Post.

Man kann zwar direkt SQL-Statements erzeugen, wie du es machst, aber wenn
es die Zeit erlaubt, dann sollte man lieber Objekte der jeweiligen Klasse erzeugen und
dann mit save! speichern. Das hat den Vorteil, dass die Validations ausgeführt werden.

In diesem Fall brauchst du dann auch nicht das mysql-gem direkt einbinden und die Connection verwalten.
Da kümmert sich dann Rails um alles.

_________________
Grüße
Jack


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Datenbank befüllen
BeitragVerfasst: 28 Mai 2014, 15:10 
Offline
Schüler

Registriert: 09 Okt 2007, 10:38
Beiträge: 23
also so wie es scheint hat er alles soweit in die Datenbank gespielt. mal sehen, ob und wie es nach dem Deploy aussieht....



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

require "csv"
file = CSV.read("DE.txt", { :col_sep => "\t" })
file.each do |row|
values = row.inject([]){|k,v| k<<"'#{v}'";k}.join(',')
City.create({
:country_code => row[0],
:postal_code => row[1],
:place_name => row[2],
:state_long => row[3],
:state_krzl => row[4],
:admin_code => row[5],
:admin_long => row[6],
:admin_code3 => row[7],
:admin_long3 => row[8],
:latitude => row[9],
:longitude => row[10],
:accuracy => row[11]
})
end


_________________
Ich faulenze nicht - ich studiere :D
http://www.bwl.info/

RoR Studienprojekt
http://app.sprachkurse.org


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Datenbank befüllen
BeitragVerfasst: 28 Mai 2014, 15:17 
Offline
Schüler

Registriert: 09 Okt 2007, 10:38
Beiträge: 23
wie führe ich denn auf den entfernten Rechner das db/seeds.rb als cap deploy aus?

_________________
Ich faulenze nicht - ich studiere :D
http://www.bwl.info/

RoR Studienprojekt
http://app.sprachkurse.org


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Datenbank befüllen
BeitragVerfasst: 28 Mai 2014, 15:38 
Offline
Schüler

Registriert: 09 Okt 2007, 10:38
Beiträge: 23
erledigt, ich habe es direkt auf dem Server mit einem Rake db:setup Task ausgeführt, zwar nicht sehr elegant, aber es hat geklappt ;-)

_________________
Ich faulenze nicht - ich studiere :D
http://www.bwl.info/

RoR Studienprojekt
http://app.sprachkurse.org


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Datenbank befüllen
BeitragVerfasst: 02 Jun 2014, 08:32 
Offline
Interpreter

Registriert: 10 Dez 2007, 17:37
Beiträge: 1906
In deinem cap Script könntest du auch rake db:seed aufrufen.

_________________
Grüße
Jack


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron