diff --git a/src/metabase/cmd/dump_to_h2.clj b/src/metabase/cmd/dump_to_h2.clj
index a1f7e78630d36a6161a939839494dc755d1cafe5..9ca8cb535a8666a5c56c0a3020ba7b705ec410af 100644
--- a/src/metabase/cmd/dump_to_h2.clj
+++ b/src/metabase/cmd/dump_to_h2.clj
@@ -77,11 +77,16 @@
     (insert-chunk! target-db-conn table-name chunk))
   (println-ok))
 
+(def ^:private table-select-fragments
+  {"metabase_field" "ORDER BY id ASC"}) ; ensure ID order to ensure that parent fields are inserted before children
+
 (defn- load-data! [target-db-conn]
   (println "Source db:" (dissoc (mdb/jdbc-spec) :password))
   (jdbc/with-db-connection [db-conn (mdb/jdbc-spec)]
     (doseq [{table-name :table, :as e} entities
-            :let [rows (jdbc/query db-conn [(str "SELECT * FROM " (name table-name))])]
+            :let [fragment (table-select-fragments (str/lower-case (name table-name)))
+                  rows     (jdbc/query db-conn [(str "SELECT * FROM " (name table-name)
+                                                     (when fragment (str " " fragment)))])]
             :when (seq rows)]
       (insert-entity! target-db-conn e rows))))