![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| agR |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.7.2006 Где: Киев Репутация: 2 Всего: 2 |
Необходимо один DBF файл разбить на несколько других. То есть часть инфы в одну сторону, а часть - в другую.
Для чтения данных использую мост jdbc:odbc , а для создания новых DBF-ок приходится пользоваться JavaDBF, т.к. оказывается нормально создать табличку jdbc:odbc не в состоянии (зато хоть читает норм ;)). Исходный файл содержит кириллицу, которая в новых файлах отображается в виде "???" и др. символах (в зависимости от кодировки). Перебрал уйму кодировок, но так и не привел строки в чувство. По идее файл имеет кодировку cp866 (DOS), для чтения использую такое соединение:
потом в массив заношу значения:
Для записи пользуюсь классом:
в файле OSN_NEW.DBF 13 поле будет отображено неправильно. То же будет и с другими полями если в них ввести кириллицу. Помогите плз... П.С. Если не выйдет заставят делать на Delphi..... не дайте им сделать это! |
||||||
|
|||||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
Это одноразовая процедура, или нужно делать периодически?
Во-первых, проверьте, а читаются даные корректно? (в rs.getString(2)). Для работы с dbf через JDBC-ODBC рекомендую http://download.microsoft.com/download/vfo...-US/VFPODBC.msi Это сообщение отредактировал(а) fixxer - 20.7.2007, 12:47 -------------------- ![]() |
|||
|
||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
А разве кодовая страница не cp1251 ?
|
|||
|
||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
Смотря как/где файлик сделан. Если в FoxPro 2.6, то запросто 866. agR, опишите задачи поподробнее, возможно удастся обойтись "INSERT INTO ... SELECT ... FROM ... WHERE ..." Это сообщение отредактировал(а) fixxer - 20.7.2007, 12:51 -------------------- ![]() |
|||
|
||||
| agR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.7.2006 Где: Киев Репутация: 2 Всего: 2 |
Одноразовая... типа старое в новое, а потом идет работа с новым, а на старое забивается.
Все читается корректно. Ставил в charSet cp1251 - в консоли выглядит так как надо. Где, кем и как создавалась база мне не известно, хотя процентов 60-70 в каком-то DOS-приложении. |
|||
|
||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
Если одноразовая, то проще всего взять Visual FoxPro и все сделать там. (Даже чисто на SQL'е)
-------------------- ![]() |
|||
|
||||
| agR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.7.2006 Где: Киев Репутация: 2 Всего: 2 |
||||
|
||||
| agR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.7.2006 Где: Киев Репутация: 2 Всего: 2 |
||||
|
||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
Я Вам дал ссылку на драйвер. Он должен поддерживать расширенный синтаксис SQL
А как Вы таблицу пробовали создать? Через DDL? Это сообщение отредактировал(а) fixxer - 20.7.2007, 13:47 -------------------- ![]() |
|||
|
||||
| agR |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.7.2006 Где: Киев Репутация: 2 Всего: 2 |
Нет. Создание написано в первом посте после слов: Вот так и создаю. JavaDBF работает через свои методы.
Спасибо. Сейчас будем смотреть. |
||||
|
|||||
| fixxer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
Нет, когда пробовали через jdbc:odbc Добавлено через 1 минуту и 31 секунду Вообще подозреваю, что дело в JavaDBF. Он запросто может не прописывать кодовую страницу в файл. -------------------- ![]() |
||||
|
|||||
| agR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.7.2006 Где: Киев Репутация: 2 Всего: 2 |
Вот тут я тогда описал проблему.
Где-то потом прочитал, что jdbc:odbc на данный момент поддерживает лишь корректное чтение. Есть метод setCharactersetName(), но он походу не работает. Это сообщение отредактировал(а) agR - 20.7.2007, 14:14 |
|||
|
||||
| fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
О! А вы javadoc на JavaDBF читали? У суперкласса DBFWriter'а DBFBase есть метод setCharactersetName(String). Моя чувствительная жопа подсказывает, что это должно помочь. Правда не уверен в том в каком формате нужно задавать это имя. Поиграйтесь, посмотрите доки.
Это сообщение отредактировал(а) fixxer - 20.7.2007, 14:14 -------------------- ![]() |
|||
|
||||
| agR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.7.2006 Где: Киев Репутация: 2 Всего: 2 |
Этим сейчас и занимаюсь Добавлено через 4 минуты и 1 секунду Так и есть, он не работает. Ставил ср1251 и ср866 Проверил при помощи проги - файлы идентичны. Это сообщение отредактировал(а) agR - 20.7.2007, 14:15 |
|||
|
||||
| fixxer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
А вот и неправда Ваша. Работает. Как cp1251 так и cp866. Пример содрал из туториала, только заменил поле во второй записи на русское слово "Тест"
-------------------- ![]() |
||||
|
|||||
| agR |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.7.2006 Где: Киев Репутация: 2 Всего: 2 |
Сдается мне он работает еще хуже чем прошлый. База так и не создалась. Та и ведет он себя неадекватно. Но все равно, спасибо. Добавлено через 6 минут и 39 секунд
аааАААааааААаааааа!!!!!!!!!!!!!!!!!!!!!!!!!!! Работает!!! fixxer, позвольте вам выразить свое восхищение!!!! Огромное спасибо, за потраченное время. |
||||
|
|||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Плюс fixxer явно заслужил.
|
|||
|
||||
| Kisja |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 30.7.2007 Репутация: нет Всего: нет |
И как же Вам удалось єто заставитт работать нормально. Я запускаю этот скрипт (когда writer.setCharactersetName("cp866");) у себя, создаеться дбф-файл с нужной структурой, но записей нет, а в консоль мне выдает: Exception in thread "main" com.linuxense.javadbf.DBFException: Cp866 at com.linuxense.javadbf.DBFWriter.write(DBFWriter.java:246) at DBFWriterTest.main(DBFWriterTest.java:59) когда устанавливаю кодовою страницу cp1251 (writer.setCharactersetName("cp1251");), файл создаеться нормально, но вместо кирилицы (вместо слова "тест") в поле дбв-файла вижу "TхёЄ". Помогите разобраться с кодировками. |
|||
|
||||
| agR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.7.2006 Где: Киев Репутация: 2 Всего: 2 |
Вот тот код, который работает у меня (ненужное вырезано). Проверьте, может в чем-то вы ошиблись.
Пример тестовый... но главное - работает. Может у вас нет самой кодировки... Тогда вам сюда Это сообщение отредактировал(а) agR - 1.8.2007, 11:28 |
|||
|
||||
| Kisja |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 30.7.2007 Репутация: нет Всего: нет |
||||
|
||||
| diablero |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 1 Всего: 5 |
Но до конца, есть проблема например с ковычками («), они заменяются на ? Как такое решить? -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
| fixxer |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 6 Всего: 27 |
вопрос в том, есть ли такие кавычки (французские - «) в стандартном наборе символов cp866 -------------------- ![]() |
||||
|
|||||
| diablero |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 337 Регистрация: 3.12.2006 Где: Аркхэм Репутация: 1 Всего: 5 |
Они есть в 1251, а в 866 их нет, есть только ". Получается что необходимо в строке проверять их наличие и заменять аналогами. Но это не айс. -------------------- Есть два варианта решения проблемы - реальный и фантастический. Реальный - это когда прилетят инопланетяне и все за нас сделают ... |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |