diff --git a/RombaSharp/Partials/RombaSharp_Helpers.cs b/RombaSharp/Partials/RombaSharp_Helpers.cs
index f38ae571..0ddfcad7 100644
--- a/RombaSharp/Partials/RombaSharp_Helpers.cs
+++ b/RombaSharp/Partials/RombaSharp_Helpers.cs
@@ -295,6 +295,42 @@ namespace SabreTools
_logger.User("User Processor Time: " + proc.UserProcessorTime);
}
+ ///
+ /// Export the current database to CSV
+ ///
+ private static void ExportDatabase()
+ {
+ SqliteConnection dbc = new SqliteConnection(_connectionString);
+ dbc.Open();
+ StreamWriter sw = new StreamWriter(File.Open("export.csv", FileMode.Create, FileAccess.Write));
+
+ sw.WriteLine("\"ID\",\"Size\",\"CRC\",\"MD5\",\"SHA-1\",\"In Depot\",\"DAT Hash\"");
+
+ string query = "SELECT dats.id, size, crc, md5, sha1, indepot, hash FROM data JOIN dats ON data.id=dats.id";
+ SqliteCommand slc = new SqliteCommand(query, dbc);
+ SqliteDataReader sldr = slc.ExecuteReader();
+
+ if (sldr.HasRows)
+ {
+ while (sldr.Read())
+ {
+ string line = "\"" + sldr.GetInt32(0) + "\","
+ + "\"" + sldr.GetInt64(1) + "\","
+ + "\"" + sldr.GetString(2) + "\","
+ + "\"" + sldr.GetString(3) + "\","
+ + "\"" + sldr.GetString(4) + "\","
+ + "\"" + sldr.GetInt32(5) + "\","
+ + "\"" + sldr.GetString(6) + "\"";
+ sw.WriteLine(line);
+ }
+ }
+
+ sldr.Dispose();
+ slc.Dispose();
+ sw.Dispose();
+ dbc.Dispose();
+ }
+
///
/// Moves DAT index entries for orphaned DATs to backup folder
///
diff --git a/RombaSharp/RombaSharp.cs b/RombaSharp/RombaSharp.cs
index cb79cc70..05e2e957 100644
--- a/RombaSharp/RombaSharp.cs
+++ b/RombaSharp/RombaSharp.cs
@@ -75,6 +75,7 @@ namespace SabreTools
dbstats = false,
diffdat = false,
dir2dat = false,
+ export = false,
fixdat = false,
lookup = false,
memstats = false,
@@ -117,6 +118,9 @@ namespace SabreTools
case "dir2dat":
dir2dat = true;
break;
+ case "export":
+ export = true;
+ break;
case "fixdat":
fixdat = true;
break;
@@ -176,8 +180,8 @@ namespace SabreTools
}
// If more than one switch is enabled, show the help screen
- if (!(archive ^ build ^ dbstats ^ diffdat ^ dir2dat ^ fixdat ^ lookup ^ memstats ^ miss ^
- progress ^ purgeBackup ^ purgeDelete ^ refreshDats ^ shutdown))
+ if (!(archive ^ build ^ dbstats ^ diffdat ^ dir2dat ^ export ^ fixdat ^ lookup ^ memstats ^
+ miss ^ progress ^ purgeBackup ^ purgeDelete ^ refreshDats ^ shutdown))
{
_logger.Error("Only one feature switch is allowed at a time");
Build.Help();
@@ -226,6 +230,12 @@ namespace SabreTools
InitDir2Dat(inputs);
}
+ // Export the database to file
+ else if (export)
+ {
+ ExportDatabase();
+ }
+
// For each specified DAT file it creates a fix DAT
else if (fixdat)
{
diff --git a/SabreTools.Helper/Data/Build.cs b/SabreTools.Helper/Data/Build.cs
index 00e2d596..72b99e43 100644
--- a/SabreTools.Helper/Data/Build.cs
+++ b/SabreTools.Helper/Data/Build.cs
@@ -89,6 +89,7 @@ namespace SabreTools.Helper
helptext.Add(" -new= DAT to compare to");
helptext.Add(" dir2dat Creates a DAT file for the specified input directory");
helptext.Add(" -out= Filename to save out to");
+ helptext.Add(" export Exports db to export.csv");
helptext.Add(" fixdat For each specified DAT file it creates a fix DAT");
helptext.Add(" lookup For each specified hash, look up available information");
helptext.Add(" memstats Prints memory stats");