ODBC, MSAccess и прочая нечисть
Под FreeBSD я что-то не решился этим заниматься, ну тат вроде как замена винде и делать пришлось. Задача такова: есть прога на java, которая через ODBC общается с MSAccess базой, вот это извращение нужно было заставить работать под ubuntu. Для начала были установлены unixodbc и mdbtools. Поле их установки никаких ярлыков в меню не появилось, команды аля unixodbc mdbtools не прокатили, через поиск надыбыл /usr/share/menu/unixodbc-bin а то туда уже ODBCConfig, надо сказать толку от этой гуишной оболочки не много, так и не разобрался как нормально что там сделать, всё ошибки выдавал, опытным путём и гуглом было выяснено, что все что надо находится в /etc/odbc.ini и /etc/odbcinst.ini. В odbcinst.ini находились настройки драйвера MSAccess которые мне всётаки удалось запихнуть. а в odbc.ini настройки System DNS где собственно и должно находится описалово конекта к базе, ничего сложного там не было
1 2 3 4 5 6 7 8 | [myConnection] Description = Microsoft AccessTS Driver = MDB1 Database = /home/vampirus/db1.mdb Servername = localhost UserName = Password = Port = 5432 |
помойму только Driver,Database тут нужны но раз работает и так то оставил)
проверил работу
1 2 | isql -v myConnection select * from Realtion |
работает, ну думаю зашибись, так просто, вечером проверю, как там java с этим подружится, и пошёл на работу.
Вечером.
про попытке запуска прога выпадала с исключением, ещё бы ведь я почему-то решил что будет лучше если поставить Open-jdk вмето sun’овского. Ладно поставил сановкий jdk. И тут меня ждал сюрприз, видимо драйвер корявый или что, но при любом раскладе было Result Set Type is not supported. Получается от MSAccess надо было отказыватся, ничего лучше mysql я не придумал. Надо сказать ставить mysql php apache я не хотел, т.к. для этих целей я хотел поставить FreeBSD на старый комп. Ну ладно думаю пригодится mysql ещё для чего-нибудь. т.к. php ставить не хотелось, решил ну попробую через perl не сложно должно быть, но модуля(или как он там?) DBD:ODBC не оказалось, про попытке его доставить Makefile.pl выдал какие то ошибки, разбираться в которых небыло никакого желания. потом для импорта, решил поробовать mdbtools, не зря же ставил, но на сколько я смог понять импорт шёл только в csv, ну думаю тут на python попробую, благо с csv я на нём уже работал, но тут меня ждала подлянка, для работы с mysql надо было что-то доставить, а было уже лень. Последней попыткой была kexi под FreeBSD она вроде в mysql мне перекинула(или нет, непомню), но тут она отказывалась это делать и падала.
Уторо вечера мудренее.
Надо было сразу поставить php и не выпендриваться, ах да ещё пришлось качнуть драйвер odbcmysql и настроить, но это мелочи. скриптик простой ничего сложного
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php $r = odbc_connect("myConnection","",""); $q = odbc_exec($r,"select * from Relation"); $conn = mysql_connect("localhost","root","password"); mysql_selectdb("db1"); while(odbc_fetch_row($q)){ $PS=odbc_result($q,"PS"); $Parg = odbc_result($q,"Parg"); $X = odbc_result($q,"X"); $R = odbc_result($q,"relation"); $Y = odbc_result($q,"Y"); mysql_query("INSERT INTO Relation (PS,Parg,X,relation,Y) VALUE ('$PS','$Parg','$X','$R','$Y')"); } ?> |
и вот я с надежной запускаю прогу, а она мне идите лесом, таблицы RELATION нету, как так? есть она говорю(ну не привык я ещё что регистр имеет значение), ладно переименовываю таблицу в RELATION, а она мне нету таблицы Relation, ах ты су… @= во что значит делат прогу в винде группе человек. Переведя всё к единому регистру, java всё скушала и начала работать)