Mnesia Questions

Sebastian Bello <>
Mon Nov 28 13:43:44 CET 2005


Regarding point 3, does 'mnesia:load_textfile' support csv files?
    Sebastian-

----- Original Message -----
From: "Alex Peake" <>
To: <>
Sent: Monday, November 28, 2005 4:52 AM
Subject: Mnesia Questions


> 1) I set up person as a ram_copies table. I did a
> mnesia:dump_tables([person]). Then I tried mnesia:change_table_copy_type
to
> get to disc_copies and got an error saying "Table dump exists". How do I
> change this table to disc_copies?
>
> 2) Can I move the dump of person to another machine by copying the file
> person.dcd?
>
> 3) What is a good way to load a text (csv) file into a table? I tried
> mnesia:load_textfile and it is quite slow.
>
> 4) How do I best join two large tables (and get a subset)? I tried:
>
> non_english_g3_join() ->
>     F = fun() ->
>                 Q = qlc:q([{P#persondata.f2, P#persondata.f1,
R#person.pkey}
> || P <- mnesia:table(persondata),
>                                              R <- mnesia:table(person),
> P#persondata.personid == R#person.id,
>                                              P#persondata.f8 == "03"
orelse
> P#persondata.f8 == "02", P#persondata.f3 /= "English"]),
>                 qlc:e(Q)
>         end,
>     mnesia:transaction(F).
>
> And it went off in the weeds (at least for 45 minutes, when I quit
waiting).
>
> I also tried:
>
> sample_join() ->
>         Q = query
>             [ {P#persondata.f2, P#persondata.f1} ||
>                 P <- table(persondata),
>                 R <- table(person),
>                 P#persondata.personid = R#person.id,
>                 P#persondata.f8 = "03",
>                 P#persondata.f3 /= "English"
>             ]
>         end,
>         F = fun() -> mnemosyne:eval(Q) end,
>         mnesia:transaction(F).
>
>
> And got:
>
> =ERROR REPORT==== 27-Nov-2005::22:32:35 ===
> Error in process <0.478.0> with exit value:
> {{nocatch,{'EXIT',mnemosyne_not_runn
>
ing}},[{mnemosyne_lc,the_query,1},{person,sample_join,0},{erl_eval,do_apply,
> 5},{
> shell,exprs,6},{shell,eval_loop,3}]}
>
> ** exited: {{nocatch,{'EXIT',mnemosyne_not_running}},
>             [{mnemosyne_lc,the_query,1},
>              {person,sample_join,0},
>              {erl_eval,do_apply,5},
>              {shell,exprs,6},
>              {shell,eval_loop,3}]} **
>
>
> Yet:
>
> sample_mq() ->
>         Q = query
>             [ {P#persondata.f2, P#persondata.f1} ||
>                 P <- table(persondata),
>                 P#persondata.f8 = "03",
>                 P#persondata.f3 /= "English"
>             ]
>         end,
>         F = fun() -> mnemosyne:eval(Q) end,
>         mnesia:transaction(F).
>
> works.
>
>
>




More information about the erlang-questions mailing list