Wie kann ich die aktuellen Datensatzzahlen aus allen meinen Datenbanktabellen in einem Befehl über die Konsole anzeigen? Vielen Dank!Sehen Sie alle Tabellen, alle Datensätze von der Konsole?
Antwort
Dies wird es tun, wenn Sie alle Ihre Klassen ‚berührt‘ habe, aber nur für die tatsächliche Modelle:
ActiveRecord::Base.subclasses.map { |c| "#{c.name} => #{c.count}" }
Wenn Sie wirklich alle Tabellen möchten, Tabellen einschließlich verbinden, die auf Modellen Karte nicht:
ActiveRecord::Base.connection.tables.map { |t| "#{t} => " + ActiveRecord::Base.connection.execute("select count(*) from #{t}").fetch_row.first}
Dies könnte etwas länger sein als das, was man erhofft hatte, aber hofft, dass diese ;-)
Dir.glob('app/models/*.rb').each {|file| puts eval(File.basename(file, ".rb").classify + '.count').to_s + " #{File.basename(file, ".rb").classify.pluralize}"}
hilft Es könnte besser sein, eine Rake Aufgabe dafür zu schaffen.
Hallo Dave hilft, dank dafür! Ich habe einen seltsamen Fehler - ich habe ein Modell namens "Adresse" und aufgrund der Pluralisierung gibt es mir den Fehler "NameError: unitisierte konstante Addres". Sorry für das Problem - wie komme ich daran vorbei? – sscirrus
ActiveRecord::Base.connection.tables
dies wird ein Array der Tabellen zurückkehren Sie haben, wenn Sie es nützlich finden.
Ich habe versucht, dies zu tun, und ich kam auf meine eigene Art und Weise, dies zu tun.
Ich mag verkapseln, wenn in ein Modell Wartung genannt, die keine aktiven Datensatz Modell ist
mein Modell wie
siehtclass Maintenance
def self.show_all_tables_count
list_table_with_count = []
ActiveRecord::Base.connection.tables.each do |table|
unless ['ar_internal_metadata', 'schema_migrations'].include?(table)
list_table_with_count << [name: table, count: table.singularize.camelize.constantize.count]
end
end
list_table_with_count
end
end
Ich hoffe, dass diese
- 1. Mysql bekommen alle verbundenen Datensätze beide Tabellen
- 2. Löschen Sie alle zugehörigen Datensätze
- 3. Wie sehen Sie alle Tabellen in einer HSQLDB-Datenbank?
- 4. Löschen Sie alle verwandten Datensätze aus mehreren Tabellen
- 5. Anzahl der Datensätze für alle Tabellen in MySQL-Datenbank
- 6. alle Datensätze Holen Sie das "eigene" alle diese anderen Aufzeichnungen
- 7. SQL: Löschen Sie alle verschachtelten Selbstreferenzierung Datensätze
- 8. alle Datensätze auswählen
- 9. Erhalten Sie alle verwandten Datensätze mit Zuordnungen
- 10. Relationale Tabelle PDO Sehen Sie alle
- 11. Wie alle Datensätze für eine Tabelle zu zerstören, einschließlich: abhängige Datensätze in anderen Tabellen
- 12. Erhalten Sie alle Datensätze aus azurTabellenSpeicher
- 13. Löschen Sie alle Datensätze aus einem Geschäft
- 14. Verwenden tablediff alle Tabellen
- 15. Löschen Sie alle in Schienen Konsole
- 16. Wie bekomme ich alle Datensätze aus zwei Tabellen?
- 17. Löschen Sie alle Datensätze in NSManagedObjectContext
- 18. Überwachen Sie alle JavaScript-Ereignisse in der Browser-Konsole
- 19. Oracle - löschen Sie alle untergeordneten Datensätze für ein übergeordnetes Element
- 20. So erhalten Sie alle Datensätze aller übergeordneten Datensätze
- 21. Meteor aktualisiert alle Datensätze in der Benutzersammlung
- 22. ORMLite alle Tabellen zurücksetzen
- 23. Wählen Sie alle Datensätze aus, wenn der Parameter -1
- 24. Verknüpfen Sie alle verwandten Tabellen in SQLAlchemy
- 25. Holen Sie sich alle Datensätze aus der Tabelle - EclipseLink
- 26. SQL Server - Wählen Sie alle oberen der Stunden Datensätze
- 27. Löschen Sie alle Tabellen außer einem?
- 28. MySQL - alle Datensätze zu aktualisieren
- 29. Löschen Sie alle Benutzer von Firebase Auth-Konsole
- 30. InitRow = true Lösche alle Datensätze
Der zweite Befehl gibt mir einen Mysql-Fehler 'Sie haben einen Fehler in Ihrer SQL-Syntax ... überprüfen Sie für die richtige Syntax in der Nähe von 'Referenzen' in Zeile 1: Wählen Sie count (*) from references'. – sscirrus
'Referenzen' ist ein reserviertes Wort in MySQL (http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html). Es wird wahrscheinlich funktionieren, wenn Sie Zitate oder Backticker um # {t} setzen. –
Für Postgresql mit Rails 3.2.x musste die 2. Anweisung angepasst werden: 'ActiveRecord :: Base.connection.tables.map {| t | "# {t} =>" + ActiveRecord :: Base.connection.execute ("Wähle Anzahl (*) von # {t}"). zuerst ['count']} ' –