summaryrefslogtreecommitdiff
path: root/db_update_scripts/update_weights.php
diff options
context:
space:
mode:
authorNathan Kinkade <nath@nkinka.de>2008-03-23 02:50:00 +0000
committerNathan Kinkade <nath@nkinka.de>2008-03-23 02:50:00 +0000
commit19412e5b812d9cb791ab97d41f4bac2d28b456b1 (patch)
tree9565e7337404fd88fadce3fd57cd6f801e3b6352 /db_update_scripts/update_weights.php
parentf68e230521138a8ba491c51a893312e411f57fb7 (diff)
Added scripts for updating database with USDA Standard Reference update files
Diffstat (limited to 'db_update_scripts/update_weights.php')
-rwxr-xr-xdb_update_scripts/update_weights.php128
1 files changed, 128 insertions, 0 deletions
diff --git a/db_update_scripts/update_weights.php b/db_update_scripts/update_weights.php
new file mode 100755
index 0000000..e1429fd
--- /dev/null
+++ b/db_update_scripts/update_weights.php
@@ -0,0 +1,128 @@
+#!/usr/bin/php
+
+<?php
+
+/**
+ * Script to update nutridb table footnotes which corresponds
+ * to USDA file FOOTNOTE, which corresponds to update files
+ * DEL_FTNT.txt and ADD_FTNT.txt and CHG_FTNT.txt.
+ *
+ * NOTE: This script relies on the fact that updates files
+ * are named as they were from the SR19 -> SR20 update.
+ */
+
+require("config.php");
+
+$fh_del = fopen("{$updatesDir}/DEL_WGT.txt", "r");
+$fh_add = fopen("{$updatesDir}/ADD_WGT.txt", "r");
+$fh_chg = fopen("{$updatesDir}/CHG_WGT.txt", "r");
+
+# First handle deletions
+fwrite($fh_log, "### PROCESSING DEL_WGT.txt ###\n");
+$idx = 0;
+while ( ($row = fgetcsv($fh_del, 0, $delimiter, $enclosure)) !== FALSE ) {
+ $sql = sprintf("
+ UPDATE weights
+ SET usda_status = 'deleted'
+ WHERE ndb_no = '%s'
+ AND seq = '%s'
+ ",
+ $row[0],
+ $row[1]
+ );
+ $db->Modify($sql);
+ if ( $db->_error ) {
+ fwrite($fh_log, "\tERROR deactivating ndb_no {$row[0]}: $db->_error\n");
+ } elseif ( $db->_affectedRows == 0 ) {
+ fwrite($fh_log, "\tWARNING: ndb_no {$row[0]} was not found in the database.\n");
+ } else {
+ $idx++;
+ }
+}
+fwrite($fh_log, "\tDeactivated $idx records from table weights.\n");
+
+# Now handle additions
+fwrite($fh_log, "### PROCESSING ADD_WGT.txt ###\n");
+$idx = 0;
+while ( ($row = fgetcsv($fh_add, 0, $delimiter, $enclosure)) !== FALSE ) {
+ # Don't add the record if this ndb_no already exists
+ $sql = sprintf("
+ SELECT ndb_no FROM weights
+ WHERE ndb_no = '%s'
+ AND seq = '%s'
+ AND amount = '%s'
+ AND msre_desc = '%s'
+ AND gm_wgt = '%s'
+ ",
+ $row[0],
+ $row[1],
+ $row[2],
+ $row[3],
+ $row[4]
+ );
+ $db->Select($sql);
+ if ( $db->_rowCount != 0 ) {
+ fwrite($fh_log, "\tWARNING not adding weight for ndb_no {$row[0]} because it already exists\n");
+ continue;
+ }
+
+ $sql = sprintf("
+ INSERT INTO weights(ndb_no, seq, amount, msre_desc, gm_wgt, num_data_pts, std_dev)
+ VALUES('%s','%s','%s','%s','%s','%s','%s')
+ ",
+ $row[0],
+ $row[1],
+ $row[2],
+ addslashes($row[3]),
+ $row[4],
+ $row[5],
+ $row[6]
+ );
+ $db->Modify($sql);
+ if ( $db->_error ) {
+ fwrite($fh_log, "\tERROR adding footnote for ndb_no {$row[0]}: $db->_error\n");
+ } else {
+ $idx++;
+ }
+}
+fwrite($fh_log, "\tAdded $idx records to table footnotes\n");
+
+# Now make updates
+fwrite($fh_log, "### PROCESSING CHG_WGT.txt ###\n");
+$idx = 0;
+while ( ($row = fgetcsv($fh_chg, 0, $delimiter, $enclosure)) !== FALSE ) {
+ $sql = sprintf("
+ UPDATE weights
+ SET
+ ndb_no = '%s',
+ seq = '%s',
+ amount = '%s',
+ msre_desc = '%s',
+ gm_wgt = '%s',
+ num_data_pts = '%s',
+ std_dev = '%s'
+ WHERE ndb_no = '%s'
+ AND seq = '%s'
+ ",
+ $row[0],
+ $row[1],
+ $row[2],
+ addslashes($row[3]),
+ $row[4],
+ $row[5],
+ $row[6],
+ $row[0],
+ $row[1]
+ );
+ $db->Modify($sql);
+ if ( $db->_error ) {
+ fwrite($fh_log, "\tERROR modifying ndb_no {$row[0]}: $db->_error\n");
+ } elseif ( $db->_affectedRows != 1 ) {
+ fwrite($fh_log, "\tWARNING: nothing modified for ndb_no {$row[0]}.\n");
+ } else {
+ $idx++;
+ }
+}
+fwrite($fh_log, "\tUpdated $idx records in table weights.\n");
+
+?>