Драйвер MDBTools не работает должным образом с типами данных заметок MS Acess

Я пытаюсь прочитать отформатированные базы данных MS Access после их загрузки на сервер, чтобы сохранить данные в нем на сервере MySQL. База данных содержит тип данных memo, который при использовании unixODBC с MDBTools и PDO не читается.

У меня есть PHP 7.2.17-1, работающий на сервере ubuntu18.04.1 с установленным unixODBC и работающей библиотекой PDO, из-за невозможности чтения типов данных memo я принял предложение отсюда и вместо использования класса PDO при управлении базой данных доступа я использовал Функции ODBC для выполнения этой работы. Он работал до такой степени, что отображал обрезанные значения, но не отображал правильный текст, а также преобразовывал числа в значения с плавающей запятой.

Пример:

Раньше мой код выглядел так с использованием класса PDO, который не извлекал типы данных memo.

$query = 'SELECT * FROM Product';
$mdb_file = '/var/www/html/azam/Product.mdb';
$driver = 'MDBTools';
$dataSourceName = "odbc:Driver=$driver;DBQ=$mdb_file;";
$connection = new PDO($dataSourceName);
$result = $connection->query($query)->fetchAll(\PDO::FETCH_ASSOC);
print '<pre>';
print_r($result);   
print '</pre>'

Я использую ODBC Functions Now, который извлекает усеченные значения типов данных memo и преобразует числа в числа с плавающей запятой, добавляя несколько нулей перед десятичным значением.

$query = 'SELECT * FROM Product';
$mdb_file = '/var/www/html/azam/Product.mdb';
$connection = odbc_connect("Product.mdb","",""); 
$result = odbc_exec($connection,$query);
while($row = odbc_fetch_array($result))
{   echo "<pre>";
    print_r($row);
    echo "</pre>";
}

PS: я настроил odbc.ini как и попытался привести столбец запроса к varchar(200), который генерирует ошибку при установлении соединения, что, вероятно, не поддерживается в этом сценарии.

Я ожидаю, что функции ODBC будут возвращать полную строку типа данных memo, но она показывает усеченные значения, а также числовой тип данных, который будет возвращен как числа, а не как значения с плавающей запятой.


person Azam Nasir    schedule 25.04.2019    source источник