Массовая вставка CSV в таблицу oracle
Я пытаюсь вставить содержимое csv-файла, читая его через файл.ReadAllLines() и сохранение его в DataTable.
После сохранения этого я вызываю OracleBulkCopy, чтобы вставить все записи в мою таблицу.
Я использовал фреймворк 4 для этого .Версия NET и Oracle 11g.
Это дает мне ошибку говоря "
Could not load file or assembly 'Oracle.DataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342'"
Помогите мне выяснить, что именно я здесь упускаю.
Я прилагаю код для справки.
Что я уже пробовал:
using System; using System.Data; using System.IO; using System.Configuration; using Oracle.DataAccess.Client; namespace ImportCSV { class Program { static void Main() { try { // your code here string CSVFilePathName = @"C:\TempShare\TestCSVFile.csv"; string[] Lines = File.ReadAllLines(CSVFilePathName); string[] Fields; Fields = Lines[0].Split(new char[] { ',' }); int Cols = Fields.GetLength(0); DataTable dt = new DataTable(); DataRow Row; //1st row must be column names; force lower case to ensure matching later on. for (int i = 0; i < Cols; i++) { dt.Columns.Add(Fields[i].ToLower(), typeof(string)); } for (int i = 1; i < Lines.GetLength(0); i++) { Fields = Lines[i].Split(new char[] { ',' }); Row = dt.NewRow(); for (int f = 0; f < Cols; f++) Row[f] = Fields[f]; dt.Rows.Add(Row); } SaveUsingOracleBulkCopy("tFinal", dt); } catch (Exception ex) { Console.Write("Error is " + ex.ToString()); throw; } } static void SaveUsingOracleBulkCopy(string destTableName, DataTable dt) { try { string oradb = "Data Source=(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=000.00.00.00)(PORT=0000)) (CONNECT_DATA =(SID=XX))); User Id=XXX;Password=xxxxxxx;"; using (var connection = new OracleConnection(oradb)) { connection.Open(); Console.WriteLine("Connected to Oracle Database {0}", connection.ServerVersion); Console.WriteLine("Press RETURN to exit."); Console.ReadLine(); using (var bulkCopy = new OracleBulkCopy(connection, OracleBulkCopyOptions.UseInternalTransaction)) { bulkCopy.DestinationTableName = destTableName; bulkCopy.BulkCopyTimeout = 600; bulkCopy.WriteToServer(dt); } } } catch (Exception ex) { throw ex; } } } }
Richard MacCutchan
Сообщение совершенно ясно, вам не хватает компонента библиотеки Oracle.
Nutan R
Правда. Я нашел лучший подход в https://stackoverflow.com/questions/33509331/oracle-dataaccess-client-dependencies