Wine и телефонный справочник

Технические обсуждения
Лимон
Full Member
Full Member
Сообщения: 140
Зарегистрирован: 26 июн 2009 15:11
Откуда: Владивосток

Re: Wine и телефонный справочник

Сообщение Лимон »

вот так:

Код: Выделить всё

mdb-export -Q -d '`' tel_base.mdb kray | tail -n +2 > tel_base.txt
echo -e ".separator \` \n CREATE TABLE phones (number CLOB, owner CLOB, street CLOB, house CLOB, flat CLOB); \n.import tel_base.txt phones" | sqlite3 tel_base.db
предыдущий вариант скопировал неверно, выражение было разбито на две строки.
да еще появится файл tel_base.txt
его можно удалить, а можно не удалять, искать прямо в нем
grep "ИВАНОВ" tel_base.txt
awk -F '`' '/ИВАНОВ ИВАН ИВАНОВИЧ/{print $1}' tel_base.txt
разделитель полей = `

Аватара пользователя
antichrist
Full Member
Full Member
Сообщения: 248
Зарегистрирован: 19 апр 2008 17:05
Откуда: Владивосток
Контактная информация:

Re: Wine и телефонный справочник

Сообщение antichrist »

Лимон писал(а):
antichrist писал(а): А старый файл оставлять?
Там новые файлы какие - то появляются.
Чет свежую базу не получается конвертировать.
со старым файлом можешь делать, что хочешь.
должен появиться один новый файл tel_base.db
что не получается? чтобы тебе помогли, надо сообщить: 1. что ты сделал, 2. какой результат ты получил, 3. какой результат ты хотел получить.
1. Закинул базу в директорию
2. Запустил скрипт конвертации, он сконвертировал в sqlite3
3. программа расчитана на sqlite2 вроде как
поэтому он нихрена не находит, путь к базе указал правильно.

Лимон
Full Member
Full Member
Сообщения: 140
Зарегистрирован: 26 июн 2009 15:11
Откуда: Владивосток

Re: Wine и телефонный справочник

Сообщение Лимон »

antichrist писал(а): 3. программа расчитана на sqlite2 вроде как
поэтому он нихрена не находит, путь к базе указал правильно.
программа использует sqlite3, судя по описанию автора.
сообщения об ошибке какие-нибудь есть?

Аватара пользователя
antichrist
Full Member
Full Member
Сообщения: 248
Зарегистрирован: 19 апр 2008 17:05
Откуда: Владивосток
Контактная информация:

Re: Wine и телефонный справочник

Сообщение antichrist »

Лимон писал(а):
antichrist писал(а): 3. программа расчитана на sqlite2 вроде как
поэтому он нихрена не находит, путь к базе указал правильно.
программа использует sqlite3, судя по описанию автора.
сообщения об ошибке какие-нибудь есть?
нет, просто пишет, что: "записей надено 0"

Аватара пользователя
antichrist
Full Member
Full Member
Сообщения: 248
Зарегистрирован: 19 апр 2008 17:05
Откуда: Владивосток
Контактная информация:

Re: Wine и телефонный справочник

Сообщение antichrist »

Лимон писал(а):вот так:

Код: Выделить всё

mdb-export -Q -d '`' tel_base.mdb kray | tail -n +2 > tel_base.txt
echo -e ".separator \` \n CREATE TABLE phones (number CLOB, owner CLOB, street CLOB, house CLOB, flat CLOB); \n.import tel_base.txt phones" | sqlite3 tel_base.db
предыдущий вариант скопировал неверно, выражение было разбито на две строки.
да еще появится файл tel_base.txt
его можно удалить, а можно не удалять, искать прямо в нем
grep "ИВАНОВ" tel_base.txt
awk -F '`' '/ИВАНОВ ИВАН ИВАНОВИЧ/{print $1}' tel_base.txt
разделитель полей = `
не скопировал я правильно. Я знаю, что первая строка это была установка sqlite3

Аватара пользователя
antichrist
Full Member
Full Member
Сообщения: 248
Зарегистрирован: 19 апр 2008 17:05
Откуда: Владивосток
Контактная информация:

Re: Wine и телефонный справочник

Сообщение antichrist »

Он все сконвертировал, базу я в скрипте прописал правильно

Лимон
Full Member
Full Member
Сообщения: 140
Зарегистрирован: 26 июн 2009 15:11
Откуда: Владивосток

Re: Wine и телефонный справочник

Сообщение Лимон »

проверь, что сконвертировалось:
sqlite3 tel_base.db 'select count(*) from phones;'
sqlite3 tel_base.db 'select * from phones limit 10;'
что-нибудь выводит? читаемо?

Аватара пользователя
antichrist
Full Member
Full Member
Сообщения: 248
Зарегистрирован: 19 апр 2008 17:05
Откуда: Владивосток
Контактная информация:

Re: Wine и телефонный справочник

Сообщение antichrist »

Лимон писал(а):проверь, что сконвертировалось:
sqlite3 tel_base.db 'select count(*) from phones;'
sqlite3 tel_base.db 'select * from phones limit 10;'
что-нибудь выводит? читаемо?
1. выводит 0
2. Ничего не выводит

Лимон
Full Member
Full Member
Сообщения: 140
Зарегистрирован: 26 июн 2009 15:11
Откуда: Владивосток

Re: Wine и телефонный справочник

Сообщение Лимон »

а в tel_base.txt что-нибудь есть, сколько в нем строк?
wc -l tel_base.txt

Аватара пользователя
antichrist
Full Member
Full Member
Сообщения: 248
Зарегистрирован: 19 апр 2008 17:05
Откуда: Владивосток
Контактная информация:

Re: Wine и телефонный справочник

Сообщение antichrist »

Лимон писал(а):а в tel_base.txt что-нибудь есть, сколько в нем строк?
wc -l tel_base.txt
4748204 tel_base.txt

Лимон
Full Member
Full Member
Сообщения: 140
Зарегистрирован: 26 июн 2009 15:11
Откуда: Владивосток

Re: Wine и телефонный справочник

Сообщение Лимон »

удали tel_base.db
и заново выполни

Код: Выделить всё

echo -e ".separator \` \n CREATE TABLE phones (number CLOB, owner CLOB, street CLOB, house CLOB, flat CLOB); \n.import tel_base.txt phones" | sqlite3 tel_base.db
и вывод команды покажи

Аватара пользователя
antichrist
Full Member
Full Member
Сообщения: 248
Зарегистрирован: 19 апр 2008 17:05
Откуда: Владивосток
Контактная информация:

Re: Wine и телефонный справочник

Сообщение antichrist »

Лимон писал(а):удали tel_base.db
и заново выполни

Код: Выделить всё

echo -e ".separator \` \n CREATE TABLE phones (number CLOB, owner CLOB, street CLOB, house CLOB, flat CLOB); \n.import tel_base.txt phones" | sqlite3 tel_base.db
и вывод команды покажи
SQL error near line 2: table phones already exists
tel_base.txt line 183271: expected 5 columns of data but found 6

Лимон
Full Member
Full Member
Сообщения: 140
Зарегистрирован: 26 июн 2009 15:11
Откуда: Владивосток

Re: Wine и телефонный справочник

Сообщение Лимон »

ну давай поменяем разделитель полей в импорте:

Код: Выделить всё

FSEP=$'\037'
sqlite3 tel_base.db 'CREATE TABLE phones (number CLOB, owner CLOB, street CLOB, house CLOB, flat CLOB);'
mdb-export -Q -d $FSEP tel_base.mdb kray >tel_base.txt
echo .separator $FSEP$'\n'.import tel_base.txt phones | sqlite3 tel_base.db

Аватара пользователя
antichrist
Full Member
Full Member
Сообщения: 248
Зарегистрирован: 19 апр 2008 17:05
Откуда: Владивосток
Контактная информация:

Re: Wine и телефонный справочник

Сообщение antichrist »

Лимон писал(а):ну давай поменяем разделитель полей в импорте:

Код: Выделить всё

FSEP=$'\037'
sqlite3 tel_base.db 'CREATE TABLE phones (number CLOB, owner CLOB, street CLOB, house CLOB, flat CLOB);'
mdb-export -Q -d $FSEP tel_base.mdb kray >tel_base.txt
echo .separator $FSEP$'\n'.import tel_base.txt phones | sqlite3 tel_base.db
Неа, может формат базы поменялся? у меня 2008 года

Аватара пользователя
АПП
Full Member
Full Member
Сообщения: 212
Зарегистрирован: 02 май 2008 15:39
Откуда: Владивосток
Контактная информация:

Re: Wine и телефонный справочник

Сообщение АПП »

Лимон писал(а):ну давай поменяем разделитель полей в импорте:
Толку не будет. Во-первых, из-за проблемы с кодировкой - mdb-export выдаёт файл с вопросами вместо русских букв. Во-вторых, даже после экспорта непосредственно из MS Access, над txt-файлом приходится довольно-таки долго работать вручную - из-за того, что местами встречается неожиданный перенос строки и мы имеем ситуацию типа

sqlite> .import kray.txt phones
kray.txt line 899311: expected 5 columns of data but found 4

Ну и плюс, надо ещё всё к нижнему регистру привести. И по возможности пофиксить записи вроде такой: ВЕДЕНЯПИН |РОМАН АЛЕКСАНДРОВИЧ

Если бы не весь этот головняк, я бы сам написал функцию импорта новой базы в справочнике. А так, ХЗ, как автоматизировать. ::)
Последний раз редактировалось АПП 02 ноя 2009 13:10, всего редактировалось 2 раза.
Mandriva 2009.1 (desktop) / CentOS 5.1 (server)
Core 2 Duo E8400 / 4 Gb RAM / ASUS P5K / ASUS ENGTS250
Core 2 Duo E8200 / 2 Gb RAM / ECS G31T-M7 / ASUS EAH4850
Core 2 Duo E6550 / 2 Gb RAM / ASUS P5K SE / ASUS EAH2600XT

Ответить