diff --git a/components/settings.js b/components/settings.js
index 35e9ccd88de933d7da2d36d7d3b20810320e9407..bf420f7212f6d984f276b3c6e0aa69819c506fb9 100644
--- a/components/settings.js
+++ b/components/settings.js
@@ -7,8 +7,9 @@ import {
 } from 'react-native'
 import Share from 'react-native-share'
 import { Base64 } from 'js-base64'
-import styles from '../styles/index'
 import objectPath from 'object-path'
+import { getColumnNamesForCsv, cycleDaysSortedByDate } from '../db'
+import styles from '../styles/index'
 
 export default class Settings extends Component {
   constructor(props) {
@@ -27,8 +28,9 @@ export default class Settings extends Component {
           <View style={styles.homeButton}>
             <Button
               onPress={async () => {
-                const data = makeDataURI()
-                console.log(data)
+                // TODO show warning that there is nothing to export
+                if (!cycleDaysSortedByDate.length) return
+                const data = makeDataURI(cycleDaysSortedByDate)
                 try {
                   await Share.open({
                     title: 'My Drip data export',
@@ -51,24 +53,15 @@ export default class Settings extends Component {
   }
 }
 
-function makeDataURI() {
-  //TODO handle empty DB
-  const data = [{
-    date: '2018-06-23',
-    temperature: {
-      value: 36.8,
-      exclude: false
-    }
-  }]
-  const csv = transformToCsv(data)
+function makeDataURI(cycleDays) {
+  const csv = transformToCsv(cycleDays)
   const encoded = Base64.encodeURI(csv)
   return `data:text/csv;base64,${encoded}`
 }
 
-function transformToCsv(json) {
-  const day = json[0]
-  const columnNames = getPrefixedKeys(day)
-  const rows = json
+function transformToCsv(cycleDays) {
+  const columnNames = getColumnNamesForCsv()
+  const rows = cycleDays
     .map(day => {
       return columnNames.map(column => {
         return objectPath.get(day, column, '')
@@ -79,15 +72,3 @@ function transformToCsv(json) {
   rows.unshift(columnNames.join(','))
   return rows.join('\n')
 }
-
-function getPrefixedKeys(obj, prefix) {
-  return Object.keys(obj).reduce((acc, key) => {
-    const prefixedKey = prefix ? [prefix, key].join('.') : key
-    if (typeof obj[key] != 'object') {
-      acc.push(prefixedKey)
-      return acc
-    }
-    acc.push(...getPrefixedKeys(obj[key], prefixedKey))
-    return acc
-  }, [])
-}
\ No newline at end of file
diff --git a/db/index.js b/db/index.js
index 80dc08eb7b1d882343fd611b84c0a80a3808afeb..bdd2e3d786c98a3c36675810fbf3a164c570951f 100644
--- a/db/index.js
+++ b/db/index.js
@@ -98,6 +98,7 @@ const db = new Realm(realmConfig)
 
 const bleedingDaysSortedByDate = db.objects('CycleDay').filtered('bleeding != null').sorted('date', true)
 const temperatureDaysSortedByDate = db.objects('CycleDay').filtered('temperature != null').sorted('date', true)
+const cycleDaysSortedByDate = db.objects('CycleDay').sorted('date', true)
 
 function saveSymptom(symptom, cycleDay, val) {
   db.write(() => {
@@ -105,8 +106,6 @@ function saveSymptom(symptom, cycleDay, val) {
   })
 }
 
-const cycleDaysSortedByDate = db.objects('CycleDay').sorted('date', true)
-
 function getOrCreateCycleDay(localDate) {
   let result = db.objectForPrimaryKey('CycleDay', localDate)
   if (!result) {
@@ -164,6 +163,24 @@ function getPreviousTemperature(cycleDay) {
   return winner.temperature.value
 }
 
+function getColumnNamesForCsv() {
+  return getPrefixedKeys('CycleDay')
+
+  function getPrefixedKeys(schemaName, prefix) {
+    const schema = db.schema.find(x => x.name === schemaName).properties
+    return Object.keys(schema).reduce((acc, key) => {
+      const prefixedKey = prefix ? [prefix, key].join('.') : key
+      const childSchemaName = schema[key].objectType
+      if (!childSchemaName) {
+        acc.push(prefixedKey)
+        return acc
+      }
+      acc.push(...getPrefixedKeys(childSchemaName, prefixedKey))
+      return acc
+    }, [])
+  }
+}
+
 export {
   saveSymptom,
   getOrCreateCycleDay,
@@ -173,5 +190,6 @@ export {
   fillWithDummyData,
   deleteAll,
   getPreviousTemperature,
-  getCycleDay
+  getCycleDay,
+  getColumnNamesForCsv
 }