C # подход - библиотека SchemaMapper
Поскольку вы открыты для решения, использующего язык программирования, я думаю, вы можете воспользоваться библиотекой классов SchemaMapper , которая является проектом с открытым исходным кодом, опубликованным на GitHub. Полное описание можно найти в файле Readme по ссылке выше.
Важное примечание. Вчера я добавил поддержку чтения данных из баз данных (SQL Server, Oracle ...) и возможность экспорта данных в Oracle.
В этом ответе я предоставлю информацию об импорте таблиц SQL Server, создам соответствующий класс SchemaMapper для каждой (поскольку они имеют разные схемы, и вам необходимо импортировать их в разные схемы) и как экспорт данных в Oracle.
//First of all list the tables names need to import
string[] TableNameFilter = new[] { "Table1", "Table2" };
//Create an instance of the oracle import class
SchemaMapper.Exporters.OracleExport expOracle = new SchemaMapper.Exporters.OracleExport(oracleconnectionstring);
//Create an SQL Server import class
using (SchemaMapper.Converters.SqlServerCeImport ssImport = new SchemaMapper.Converters.SqlServerCeImport(sqlconnectionstring))
{
//Retrieve tables names
ssImport.getSchemaTable();
//loop over tables matching the filter
foreach(DataRow drRowSchema in ssImport.SchemaTable.AsEnumerable().Where(x =>
TableNameFilter.Contains(x["TABLE_NAME"].ToString())).ToList())
{
string SQLTableName = drRowSchema["TABLE_NAME"].ToString();
string SQLTableSchema = drRowSchema["TABLE_SCHEMA"].ToString();
DataTable dtSQL = ssImport.GetDataTable(SQLTableSchema, SQLTableName);
//Create a schema mapping class
using (SchemaMapper.SchemaMapping.SchemaMapper sm = new SchemaMapper.SchemaMapping.SchemaMapper(SQLTableSchema, SQLTableName))
{
foreach (DataColumn dc in dtSQL.Columns)
{
SchemaMapper_Column smCol = new SchemaMapper_Column();
smCol.Name = dc.ColumnName;
smCol.Name = dc.ColumnName;
smCol.DataType = smCol.GetCorrespondingDataType(dc.DataType.ToString(), dc.MaxLength);
sm.Columns.Add(smCol);
}
//create destination table in oracle
expOracle.CreateDestinationTable(sm);
//Insert data
expOracle.InsertUsingOracleBulk(sm, dtSQL);
//there are other methods such as :
//expOracle.InsertIntoDb(sm, dtSQL);
//expOracle.InsertIntoDbWithParameters(sm, dtSQL);
}
}
}
Примечание: это проект с открытым исходным кодом: он не полностью протестирован и поддерживаются не все типы данных, если вы столкнулись с некоторыми ошибками, не стесняйтесь оставить отзыв или добавить проблему в GitHub
Другой подход - мастер импорта и экспорта SQL Server
Если вы можете сделать это без планирования задания, то вы можете использовать мастер импорта и экспорта, который позволяет импортировать несколько таблиц в Oracle без необходимости создавать пакеты вручную. Он будет создавать пакеты, таблицы назначения, столбцы карты и импортировать данные.