C#: Как преобразовать данные в формате .db в .csv, сохранив при этом структуру данных? - PullRequest
0 голосов
/ 06 февраля 2020

Я создаю приложение, которое передает файл .db с удаленного сервера на локальный сервер с использованием SFTP. Эти файлы должны быть преобразованы в формат CSV для последующей визуализации данных.

Каждый .db имеет свое имя, я хочу иметь возможность прочитать каждый файл и преобразовать его в формат CSV, используя C#. Я пробовал другую реализацию, которая конвертировала в CSV, но все файлы имеют одинаковые данные.

Ниже я делаю следующее:

public DataTable ConverttoDatatable(string path, string tablename)
        {
            SQLiteConnection m_dbConnection = new SQLiteConnection("Data Source=" + path);
            m_dbConnection.Open();
            string sql = string.Format("SELECT * FROM DADLoggerTable");
            SQLiteDataAdapter adapter = new SQLiteDataAdapter(sql, m_dbConnection);
            DataSet set = new DataSet();
            adapter.Fill(set);
            DataTable table = set.Tables[0];
            return table;
        }



public void SaveCsv(DataTable dt, string filePath, string tablename)
        {
            FileStream fs = null;
            StreamWriter sw = null;
            try
            {
                fs = new FileStream(filePath + "\\" + tablename + ".csv", FileMode.Create, FileAccess.Write);
                sw = new StreamWriter(fs, Encoding.Default);
                var data = string.Empty;
                for (var i = 0; i < dt.Columns.Count; i++)
                {
                    data += dt.Columns[i].ColumnName;
                    if (i < dt.Columns.Count - 1)
                    {
                        data += ",";
                    }
                }
                sw.WriteLine(data);
                for (var i = 0; i < dt.Rows.Count; i++)
                {
                    data = string.Empty;
                    for (var j = 0; j < dt.Columns.Count; j++)
                    {
                        data += dt.Rows[i][j].ToString();
                        if (j < dt.Columns.Count - 1)
                        {
                            data += ",";
                        }
                    }
                    sw.WriteLine(data);
                }
            }
            catch (IOException ex)
            {
                throw new IOException(ex.Message, ex);
            }
        }

Это два метода для преобразования данных, и вот как я реализовал в C#.

foreach (var item_db in files_path)
 {

    var result = item_db.Substring(item_db.Length - 3);
    for (var i = 1; i < files_path.Count() + 1; i++)
        {
            if (result == ".db")
           {

            tablename = string.Format("DADLoggerTable{0}", i);
            DataTable dt = ConverttoDatatable(item_db, tablename);
            SaveCsv(dt, subFolderCSV, tablename);
           }

        }


 }

Это l oop через файлы db и он конвертирует файл, заканчивающийся на .db Al файл имеет те же данные, означает ли это, что он пишет одни и те же данные для всех файлов или что-то не так, что я не знаю.

Заранее спасибо за любые предложения.

...