Страница 1 из 1

занесение пользователей в бд

Добавлено: 2011-04-11 17:11:27
k0s
доброго времени суток, друзья.
есть задача :
существует примерно 5000 папок вида
name.sname.macnt иногда без sname в каждой такой папке лежить файлик account.settings где записаны разные настройки и строка Password с паролем юзера.
необходимо в базу postgresql в таблицу eperson записать поля
eperson_id - порядковый номер
email строится из имени папки name.sname@www.www
password из строки Password файла account.settings
firstname name - если нет то null
lastname sname - если нет то null

все что у меня пока получилось это:

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

echo | ls | grep macnt | awk -F\. '{print substr($1,1)"." substr ( $2,1 ) "@www.www" }' | sed 's/[.]*macnt//' >> accounts
получается файлик со списком вида name.sname@www.www, и наверное потом нада туда еще както записывать пароли, а то как это отправить в postgresql я вообще не представляю.. :unknown:

я новичек и возможно проблема решается совершенно подругому.

Re: занесение пользователей в бд

Добавлено: 2011-04-12 3:58:32
FiL
дык файлик надо сделать со списком вида "insert into eperson eperson_id, email, password, firstname, lastname values (.........);"
и потом его уже можно без проблем скормить в psql.
Да, займет немного времени пропарсить всё и получить нужные строчки. Такой скрипт в одну сточку писать не стоит, запутаешься. Но задачка хорошая. И ничего особо сложного, и как раз опыт наберется.

Re: занесение пользователей в бд

Добавлено: 2011-04-12 15:03:18
k0s
FiL писал(а):дык файлик надо сделать со списком вида "insert into eperson eperson_id, email, password, firstname, lastname values (.........);"
и потом его уже можно без проблем скормить в psql.
Да, займет немного времени пропарсить всё и получить нужные строчки. Такой скрипт в одну сточку писать не стоит, запутаешься. Но задачка хорошая. И ничего особо сложного, и как раз опыт наберется.
разобрался, получил файлик с огромным списком:
name.sname@www.www password
....
теперь если вам не сложно обьясните по поводу "insert into eperson eperson_id, email, password, firstname, lastname values (.........);"
у меня пароли в виде обычных символов, а в базу нада заносить в виде md5.
и насколько я понял это будет файлик *.sql и как потом его скормить базе?
да и по поводу eperson_id надо же както увеличивать очередное значение?

Re: занесение пользователей в бд

Добавлено: 2011-04-12 23:49:35
FiL
с ID просто - при создании таблицы объяви его как auto_increment -
create table eperson (eperson_id serial primary key, email varchar(60), password char(32), firstname varchar(40), lastname varchar(40));
Далее, переделай свой файл, чтоб в нем были не просто пары "name.sname@www.www password", а полные запросы -
insert into eperson (email, password, firstname, lastname) values ("name.sname@www.www", MD5('password'), "name", "sname");
потом запускаешь psql и подключаешься к своей базе.
И из приглашения Psql запускаешь

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

\i filename
Оно тебе выполнит все твои инсерты.

Re: занесение пользователей в бд

Добавлено: 2011-04-13 11:25:05
k0s
огромное спасибо за помощь, все получилось :)

Re: занесение пользователей в бд

Добавлено: 2011-04-13 20:14:43
FiL
"если у вас всё получилось с первого раза, значит вы чего-то не заметили" (с)законы мерфи