Страница 4 из 5
Re: Wine и телефонный справочник
Добавлено: 30 окт 2009 09:35
Лимон
вот так:
Код: Выделить всё
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
разделитель полей = `
Re: Wine и телефонный справочник
Добавлено: 30 окт 2009 09:52
antichrist
Лимон писал(а):antichrist писал(а):
А старый файл оставлять?
Там новые файлы какие - то появляются.
Чет свежую базу не получается конвертировать.
со старым файлом можешь делать, что хочешь.
должен появиться один новый файл tel_base.db
что не получается? чтобы тебе помогли, надо сообщить: 1. что ты сделал, 2. какой результат ты получил, 3. какой результат ты хотел получить.
1. Закинул базу в директорию
2. Запустил скрипт конвертации, он сконвертировал в sqlite3
3. программа расчитана на sqlite2 вроде как
поэтому он нихрена не находит, путь к базе указал правильно.
Re: Wine и телефонный справочник
Добавлено: 30 окт 2009 10:09
Лимон
antichrist писал(а):
3. программа расчитана на sqlite2 вроде как
поэтому он нихрена не находит, путь к базе указал правильно.
программа использует sqlite3, судя по описанию автора.
сообщения об ошибке какие-нибудь есть?
Re: Wine и телефонный справочник
Добавлено: 30 окт 2009 10:10
antichrist
Лимон писал(а):antichrist писал(а):
3. программа расчитана на sqlite2 вроде как
поэтому он нихрена не находит, путь к базе указал правильно.
программа использует sqlite3, судя по описанию автора.
сообщения об ошибке какие-нибудь есть?
нет, просто пишет, что: "записей надено 0"
Re: Wine и телефонный справочник
Добавлено: 30 окт 2009 10:33
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
Re: Wine и телефонный справочник
Добавлено: 30 окт 2009 10:40
antichrist
Он все сконвертировал, базу я в скрипте прописал правильно
Re: Wine и телефонный справочник
Добавлено: 30 окт 2009 10:57
Лимон
проверь, что сконвертировалось:
sqlite3 tel_base.db 'select count(*) from phones;'
sqlite3 tel_base.db 'select * from phones limit 10;'
что-нибудь выводит? читаемо?
Re: Wine и телефонный справочник
Добавлено: 30 окт 2009 11:10
antichrist
Лимон писал(а):проверь, что сконвертировалось:
sqlite3 tel_base.db 'select count(*) from phones;'
sqlite3 tel_base.db 'select * from phones limit 10;'
что-нибудь выводит? читаемо?
1. выводит 0
2. Ничего не выводит
Re: Wine и телефонный справочник
Добавлено: 30 окт 2009 12:22
Лимон
а в tel_base.txt что-нибудь есть, сколько в нем строк?
wc -l tel_base.txt
Re: Wine и телефонный справочник
Добавлено: 30 окт 2009 13:19
antichrist
Лимон писал(а):а в tel_base.txt что-нибудь есть, сколько в нем строк?
wc -l tel_base.txt
4748204 tel_base.txt
Re: Wine и телефонный справочник
Добавлено: 30 окт 2009 13:43
Лимон
удали 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
и вывод команды покажи
Re: Wine и телефонный справочник
Добавлено: 30 окт 2009 14:08
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
Re: Wine и телефонный справочник
Добавлено: 30 окт 2009 15:45
Лимон
ну давай поменяем разделитель полей в импорте:
Код: Выделить всё
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
Re: Wine и телефонный справочник
Добавлено: 30 окт 2009 18:33
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 года
Re: Wine и телефонный справочник
Добавлено: 01 ноя 2009 12:26
АПП
Лимон писал(а):ну давай поменяем разделитель полей в импорте:
Толку не будет. Во-первых, из-за проблемы с кодировкой - mdb-export выдаёт файл с вопросами вместо русских букв. Во-вторых, даже после экспорта непосредственно из MS Access, над txt-файлом приходится довольно-таки долго работать вручную - из-за того, что местами встречается неожиданный перенос строки и мы имеем ситуацию типа
sqlite> .import kray.txt phones
kray.txt line 899311: expected 5 columns of data but found 4
Ну и плюс, надо ещё всё к нижнему регистру привести. И по возможности пофиксить записи вроде такой: ВЕДЕНЯПИН |РОМАН АЛЕКСАНДРОВИЧ
Если бы не весь этот головняк, я бы сам написал функцию импорта новой базы в справочнике. А так, ХЗ, как автоматизировать.
