Я работаю с файлами Excel (xlsx) для загрузки больших данных в oracle, но у меня возникают проблемы с загрузкой файлов Excel размером 160 МБ (более 1 миллиона записей и 40 столбцов).
До 100 МБ, меня загружает 700 КБ, это занимает немного времени, но загружается.
Я подумываю о прекращении использования библиотеки BulkCopy и ищу другой способ сделать это, можете ли вы сказать мне, есть ли он библиотека с открытым исходным кодом, которая лучше или более эффективна для загрузки файлов в oracle.
При файлах размером 160 МБ (более 1 миллиона записей) я получаю сообщение:
SYSTEM.OutOfMemoryException в mscorlib.dll
явно указывает на то, что мне не хватает памяти.
1-Все ли методы массовой загрузки загружают файлы в память?
2-в коде, которым я делюсь, есть ли способ прочитать 50% содержимого процесса Excel «выбрать * из [file$]», а затем прочитать остальные 50%, чтобы не было проблем с памятью.
3-Я могу использовать 32- и 64-разрядную версии ODP.NET на одном компьютере без возникновения конфликта.
Я использую 32-разрядную библиотеку oracle ODP.NET, поскольку мы не можем установить 64-битную библиотеку, поэтому я рассматриваю возможность поиска библиотеки с открытым исходным кодом, которая сможет выполнить эту работу.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim _connString As String = "Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.1.100.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = ORACLE))); User Id=USER; password=PASS;"
Dim rutacarpeta As String
Dim NombreArchivo As String
Dim tablaBBDD As String
'Dim ot As OracleTransaction = conn.BeginTransaction(IsolationLevel.ReadCommitted)
Using conn As OracleConnection = New OracleConnection(_connString)
conn.Open()
Dim ot As OracleTransaction = conn.BeginTransaction(IsolationLevel.ReadCommitted)
Try
rutacarpeta = "C:\2021\"
NombreArchivo = "FILE_0.xlsx"
tablaBBDD = "FILE_TEST"
Dim xlsxConn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=Yes;IMEX=1;';"
xlsxConn = String.Format(xlsxConn, rutacarpeta + NombreArchivo).Trim()
Using excel_con As OleDbConnection = New OleDbConnection(xlsxConn)
excel_con.Open()
'Dim hoja As String = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing).Rows(0)()
Dim command As OleDbDataAdapter = New OleDbDataAdapter ("SELECT * FROM [FILE$]", excel_con)
Dim dtset As new dataset
command.fill(dtset)
dim dr as datatable =dtset.tables(0)
row_file_excel=dr.rows.count
Using bulkCopy As OracleBulkCopy = New OracleBulkCopy(conn)
bulkCopy.BulkCopyTimeout = 90000
bulkCopy.DestinationTableName = tablaBBDD
bulkCopy.WriteToServer(dr)
ot.Commit()
bulkCopy.Close()
End Using
End Using
Catch ex As Exception
Try
ot.Rollback()
Catch ex1 As Exception
MessageBox.Show(ex1.Message)
End Try
MessageBox.Show(ex.Message)
End Try
End Using
End Sub
Подробнее здесь: https://stackoverflow.com/questions/686 ... rary-for-b
Визуальная библиотека или библиотека с открытым исходным кодом для массовой загрузки в oracleБиблиотека с открытым исход ⇐ C#
Место общения программистов C#
1764001892
Anonymous
Я работаю с файлами Excel (xlsx) для загрузки больших данных в oracle, но у меня возникают проблемы с загрузкой файлов Excel размером 160 МБ (более 1 миллиона записей и 40 столбцов).
До 100 МБ, меня загружает 700 КБ, это занимает немного времени, но загружается.
Я подумываю о прекращении использования библиотеки BulkCopy и ищу другой способ сделать это, можете ли вы сказать мне, есть ли он библиотека с открытым исходным кодом, которая лучше или более эффективна для загрузки файлов в oracle.
При файлах размером 160 МБ (более 1 миллиона записей) я получаю сообщение:
SYSTEM.OutOfMemoryException в mscorlib.dll
явно указывает на то, что мне не хватает памяти.
1-Все ли методы массовой загрузки загружают файлы в память?
2-в коде, которым я делюсь, есть ли способ прочитать 50% содержимого процесса Excel «выбрать * из [file$]», а затем прочитать остальные 50%, чтобы не было проблем с памятью.
3-Я могу использовать 32- и 64-разрядную версии ODP.NET на одном компьютере без возникновения конфликта.
Я использую 32-разрядную библиотеку oracle ODP.NET, поскольку мы не можем установить 64-битную библиотеку, поэтому я рассматриваю возможность поиска библиотеки с открытым исходным кодом, которая сможет выполнить эту работу.
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim _connString As String = "Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.1.100.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = ORACLE))); User Id=USER; password=PASS;"
Dim rutacarpeta As String
Dim NombreArchivo As String
Dim tablaBBDD As String
'Dim ot As OracleTransaction = conn.BeginTransaction(IsolationLevel.ReadCommitted)
Using conn As OracleConnection = New OracleConnection(_connString)
conn.Open()
Dim ot As OracleTransaction = conn.BeginTransaction(IsolationLevel.ReadCommitted)
Try
rutacarpeta = "C:\2021\"
NombreArchivo = "FILE_0.xlsx"
tablaBBDD = "FILE_TEST"
Dim xlsxConn As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=Yes;IMEX=1;';"
xlsxConn = String.Format(xlsxConn, rutacarpeta + NombreArchivo).Trim()
Using excel_con As OleDbConnection = New OleDbConnection(xlsxConn)
excel_con.Open()
'Dim hoja As String = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing).Rows(0)()
Dim command As OleDbDataAdapter = New OleDbDataAdapter ("SELECT * FROM [FILE$]", excel_con)
Dim dtset As new dataset
command.fill(dtset)
dim dr as datatable =dtset.tables(0)
row_file_excel=dr.rows.count
Using bulkCopy As OracleBulkCopy = New OracleBulkCopy(conn)
bulkCopy.BulkCopyTimeout = 90000
bulkCopy.DestinationTableName = tablaBBDD
bulkCopy.WriteToServer(dr)
ot.Commit()
bulkCopy.Close()
End Using
End Using
Catch ex As Exception
Try
ot.Rollback()
Catch ex1 As Exception
MessageBox.Show(ex1.Message)
End Try
MessageBox.Show(ex.Message)
End Try
End Using
End Sub
Подробнее здесь: [url]https://stackoverflow.com/questions/68670963/visual-or-open-source-library-for-bulk-upload-to-oracleopen-source-library-for-b[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Полная версия