/// <summary> /// For a give DataTable this method output a CSV file with all its content /// </summary> /// <param name="table"></param> private void WriteTable(DataTable table) { var paradoxTable = new ParadoxTable(table.TableFolderPath, table.TableName); var outputFilePath = Path.Combine(_outputFolder, table.TableName + ".csv"); var refreshDateTime = DateTime.UtcNow.ToString("u"); var builder = new StringBuilder(); if (_outputHeaderLine) { var headerLine = string.Join(_columnSeparator, paradoxTable.FieldNames); if (_addRefreshDateTimeColumn) { headerLine = string.Join(_columnSeparator, headerLine, "DataRefreshDateTime"); } builder.AppendLine(headerLine); } foreach (ParadoxRecord record in paradoxTable.Enumerate()) { var outputLine = string.Join(_columnSeparator, record.DataValues.Select(Clean)); if (_addRefreshDateTimeColumn) { outputLine = string.Join(_columnSeparator, outputLine, refreshDateTime); } builder.AppendLine(outputLine); } File.WriteAllText(outputFilePath, builder.ToString()); }
/// <summary> /// 获取数据库表连接 /// </summary> /// <param name="tableName"></param> /// <returns></returns> private ParadoxTable GetParadoxTable(string tableName) { ParadoxTable table = (ParadoxTable)_ParadoxTableCache[tableName]; if (table == null) { table = new ParadoxTable(ConnectionString, tableName); _ParadoxTableCache[tableName] = table; } return(table); }
static void Main(string[] args) { var dbPath = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "data"); Console.WriteLine("Test 1: sequential read first 10 records from start"); Console.WriteLine("=========================================================="); var table = new ParadoxTable(dbPath, "zakazky"); var recIndex = 1; foreach (var rec in table.Enumerate()) { Console.WriteLine("Record #{0}", recIndex++); for (int i = 0; i < table.FieldCount; i++) { Console.WriteLine(" {0} = {1}", table.FieldNames[i], rec.DataValues[i]); } if (recIndex > 10) { break; } } Console.WriteLine("-- press [enter] to continue --"); Console.ReadKey(); Console.Clear(); Console.WriteLine("Test 2: read 10 records by index (key range: 1750 -> 1760)"); Console.WriteLine("=========================================================="); var index = new ParadoxPrimaryKey(table, Path.Combine(dbPath, "zakazky.PX")); var condition = new ParadoxCondition.LogicalAnd( new ParadoxCondition.Compare(ParadoxCompareOperator.GreaterOrEqual, 1750, 0, 0), new ParadoxCondition.Compare(ParadoxCompareOperator.LessOrEqual, 1760, 0, 0)); var qry = index.Enumerate(condition); var rdr = new ParadoxDataReader(table, qry); recIndex = 1; while (rdr.Read()) { Console.WriteLine("Record #{0}", recIndex++); for (int i = 0; i < rdr.FieldCount; i++) { Console.WriteLine(" {0} = {1}", rdr.GetName(i), rdr[i]); } } Console.WriteLine("-- press [enter] to continue --"); Console.ReadKey(); }
public void WriteCSV(string[] filepaths) { foreach (string filepath in filepaths) { string filename = Path.GetFileName(filepath); string tablename = GetTableName(filename); var table = new ParadoxTable(Directory.GetParent(filepath).ToString(), tablename); using (StreamWriter sw = new StreamWriter(Directory.GetParent(filepath).ToString() + "\\" + tablename + ".csv")) { string line = ""; // Write headers for (int i = 0; i < table.FieldCount; i++) { line += table.FieldNames[i]; if (i < table.FieldCount - 1) { line += ","; } } sw.WriteLine(line); // Write data foreach (var rec in table.Enumerate()) { line = ""; for (int i = 0; i < table.FieldCount; i++) { line += rec.DataValues[i]; if (i < table.FieldCount - 1) { line += ","; } } sw.WriteLine(line); } } } DialogResult dialogResult = MessageBox.Show("CSV conversion complete.\n\nView output files?", "Conversion Status", MessageBoxButtons.YesNo); if (dialogResult == DialogResult.Yes) { Process.Start("explorer.exe", Directory.GetParent(filepaths[0]).ToString()); } }
private void OutputMatchesInput(string inputDirectory, string outputDirectory) { var dataTables = new DbScanner().GetDatabaseTables(inputDirectory); foreach (var table in dataTables) { var tablePath = Path.Combine(table.TableFolderPath, table.TableName + ".db"); Assert.True(File.Exists(tablePath)); var paradoxTable = new ParadoxTable(table.TableFolderPath, table.TableName); var csvTableRecords = File.ReadAllLines(Path.Combine(outputDirectory, table.TableName + ".csv")); // very basic check for now Assert.Equal(paradoxTable.RecordCount, csvTableRecords.Length); foreach (var record in csvTableRecords) { var columnCount = record.Split(';').Length; Assert.Equal(paradoxTable.FieldCount, columnCount); } } }