Поддерживает ли Microsoft Jet 4.0 64-битные целые числа?

У меня есть CSV-файл, который я пытаюсь импортировать в базу данных Sybase SQL Anywhere, используя класс SABulkCopy (Sybase-версия SQLBulkCopy) в C# .NET. Первый столбец CSV-файла сопоставляется с 64-битным целочисленным значением первичного ключа в Sybase DB. В одном из столбцов также есть двоичные данные (больше 510 байт). Использование Jet 4.0 OleDB для доступа к CSV-файлу может быть не лучшим способом выполнения массовой вставки, но я не знаю другого способа сделать это с помощью исходного CSV-файла. Весь смысл этого заключается в том, чтобы избежать записи всех вставок в журнал, поскольку данные больших двоичных объектов расходуются, но их необходимо быстро импортировать. Я использую файл schema.ini для сопоставления типов данных в файле csv, проблема в том, что тип данных «Длинный» предназначен только для 32-битных целых чисел. Это вызывает ошибку, когда я передаю OleDB DataReader в SABulkCopy.WriteToServer(), поскольку БД ожидает 64-битное целое число, а не 32-битное.


person user1197862    schedule 21.05.2012    source источник


Ответы (1)


Вы не можете сделать это с помощью Jet 4.0, но вам это и не нужно. Вы можете получить распространяемый 64-разрядный модуль Access Engine по адресу http://www.microsoft.com/en-us/download/details.aspx?id=13255. Вам также потребуется обновить строку подключения «Поставщик» до «Microsoft.ACE.OLEDB.12.0».

Если использование отдельно установленного механизма невозможно, вы всегда можете выполнить простое чтение файла и проанализировать данные вот так.

person PinnyM    schedule 21.05.2012
comment
Это проблема. Для этого мне нужно использовать встроенные методы, а не то, что нужно устанавливать дополнительно. - person user1197862; 22.05.2012
comment
Движок Jet 4.0 тоже нужно "установить" - вопрос только в том, какой движок вы устанавливаете... А если у вас установлен Office 2007 или выше, то новый движок уже доступен для подключения. В любом случае, посмотрите, подходит ли вам другой предложенный мной вариант. - person PinnyM; 22.05.2012
comment
В итоге я взял фактические файлы, которые составляли столбцы больших двоичных объектов в CSV, и импортировал их напрямую в базу данных, таким образом минуя необходимость обработки CSV-файла. К сожалению, SABulkCopy по-прежнему записывает вставки в журнал, поэтому я не думаю, что есть какой-либо способ избежать этого. - person user1197862; 24.05.2012