public DataFile Export(string database) { if (!context.DatabaseExists(database)) { throw new InvalidOperationException("database does not exist"); } string folderName = Guid.NewGuid().ToString(); string zipName = folderName + DataConfig.zipExt; string absoluteFolderPath = Path.Combine(DataConfig.baseDir, DataConfig.exportDir, folderName); string absoluteZipPath = Path.Combine(DataConfig.baseDir, DataConfig.exportDir, zipName); Directory.CreateDirectory(absoluteFolderPath); TableCollection tables = context.Tables; for (int i = 0; i < tables.Count; i++) { string tableName = tables[i].Name; StreamWriter writer = new StreamWriter(Path.Combine(absoluteFolderPath, tableName + DataConfig.csvExt)); string selectQuery = SQLQueryGenerator.GetSelectQuery(tableName); context.ExecuteReader(selectQuery, (reader) => CSVReadWrite.CreateCsvFile(reader, writer)); } ZipFile.CreateFromDirectory(absoluteFolderPath, absoluteZipPath); Directory.Delete(absoluteFolderPath, true); DataFile file = new DataFile(Path.Combine(DataConfig.baseDir, DataConfig.exportDir, zipName), zipName, database); return(file); }
public void Import(DataFile file) { if (!context.DatabaseExists(file.database)) { context.CreateDatabase(file.database); } DataSet dataSet = new DataSet(file.database); dataSet.ReadXml(file.path); DataTableCollection tables = dataSet.Tables; for (int i = 0; i < tables.Count; i++) { DataTable table = tables[i]; string[] columnNames = new string[table.Columns.Count]; for (int j = 0; j < table.Columns.Count; j++) { columnNames[j] = table.Columns[j].ColumnName; } string query = SQLQueryGenerator.GetCreateTableQuery(table.TableName, columnNames); context.ExecuteNonQuery(query); } }
public DataFile Export(string database) { string fileName = database + DataConfig.xmlExt; string relativePath = Path.Combine(DataConfig.exportDir, fileName); string absolutePath = Path.Combine(DataConfig.baseDir, relativePath); string query = string.Empty; TableCollection tables = context.Tables; for (int i = 0; i < tables.Count; i++) { if (i > 0) { query += ";"; } query += SQLQueryGenerator.GetSelectQuery(tables[i].Name); } DataSet dataSet = context.SelectRows(query); dataSet.DataSetName = database; for (int i = 0; i < dataSet.Tables.Count; i++) { dataSet.Tables[i].TableName = tables[i].Name; } DataFile file = new DataFile(absolutePath, fileName, database); dataSet.WriteXml(file.path); return(file); }
public void CreateDatabase(string database) { if (DatabaseExists(database)) { throw new InvalidOperationException("database already exists"); } string query = SQLQueryGenerator.GetCreateDatabaseQuery(database); ExecuteNonQuery(query); ChangeDatabase(database); }
public List <ColumnModel> GetColumns(string table) { List <ColumnModel> columns = new List <ColumnModel>(); ColumnCollection collection = context.Tables[table].Columns; string query = SQLQueryGenerator.GetSelectQuery(table); context.ExecuteReader(query, (reader) => DataModelFactory.FillColumns(reader, collection, columns)); return(columns); }
private void CreateDatabaseTable(DataFile file, DataTable data, SqlBulkCopy bulkCopy) { DataColumnCollection columns = data.Columns; string[] columnNames = new string[columns.Count]; for (int i = 0; i < columns.Count; i++) { string columnName = columnNames[i] = columns[i].ColumnName; bulkCopy.ColumnMappings.Add(columnName, columnName); } string createTableQuery = SQLQueryGenerator.GetCreateTableQuery(file.fileName, columnNames); context.ExecuteNonQuery(createTableQuery); context.Refresh(); bulkCopy.DestinationTableName = SQLQueryGenerator.EncloseInBrackets(file.fileName); bulkCopy.WriteToServer(data); }