Direct csv import into Base table

Zolnai Tamás zolnaitamas2000 at
Fri Jun 7 15:40:05 PDT 2013

2013/6/6 Lionel Elie Mamane <lionel at>

> On Mon, Jun 03, 2013 at 09:49:01PM +0200, Zolnai Tamás wrote:
> >>> The feature which I intend to implement is making a new table and
> >>> insert into the already opened database.
> >> Yes, which is exactly what the procedure described in my previous
> >> mail also does. Except it is not limited to CSV and other
> >> calc-supported formats (but any supported database), and already
> >> gives you access to each sheet of a calc file instead of the first.
> >> Which was my main motivation for slapping a better UI on *this*
> >> procedure rather than on the more limited "go through Calc" route.
> > Well, misunderstandness around. I means making a new table and
> > insert it into the already opened database *in one step*, or more
> > steps but in an automated serial and without opening other window
> > and without copy&paste.
> Yes, that's exactly what I mean, but I'm talking about the
> *implementation* of that idea. You wanted to embed a calc document
> (with the said CSV data) inside Base scripting/code, and then copy the
> table structure and data from there. That is: you want to "automate"
> the procedure of opening the CSV in calc, and copy/pasting the data in
> Base.
> I'm trying to get you to automate *another* procedure, that is
> copy/pasting the data from *Base* to *Base*.
> *Both* procedures will give the *same* result in the end for the
> specific case of CSV data, but the "calc to Base" procedure can only
> import data that Calc can handle, while the "base to base" procedure
> can handle any data that calc can handle AND ALSO any database that
> Base can handle. So for example, if you implement it following my
> idea, your "one step import" will also be able to e.g. import data
> from a PostgreSQL database into a MySQL database. More general, more
> useful. Please do it that way, and not through a Calc XEmbeddedObject
> like you originally planned.

Ok, I looked over the code and I agree that it can be more usefull to add
the feature in this general form.

> >>> With this I just say that for the user it can be looked as a
> >>> different thing and so not make confusion.
> >> Well, if "drag'n drop" and "import" of the *same* data behave
> >> differently in the *same* application (that is, Base), I think this is
> >> confusing and unpredictable: even if the user knows of these two ways,
> >> why would he expect one to work "better" or "different" than the
> >> other?
> > I don't know what difference we actually speak about. In my first
> > plan I intended to use the same paste method and the same "Copy
> > Table" dialog which is used for "drag'n drop".
> You intended to use the same code and dialog as which is used in "copy
> from Calc, paste in Base". I want you to use the same code and dialog
> as which is used in "copy from Base, paste in Base".
> Imagine you automate this "import data" procedure using your idea of
> "use Calc under the hood to get to the CSV data", that is same code as
> which is used in "copy from Calc, paste in Base". This "use Calc under
> the hood" is completely invisible to the user, (s)he is choosing a
> menu entry in *Base*. So the user will naturally compare these two things:
>  - Choose "import data" in Base task pane.
>  - Open the *same* data in a 2nd Base window, copy it, and paste in
>    the first Base window.
> And expect that the two behave the same. The user will IMHO *not* find
> "obvious" that "Choose 'import data' in Base task pane" will behave as
> if he opened the data in ANOTHER APPLICATION (which just happens to be
> LibreOffice Calc here) and *then* pasted it.

Yes I see what you say. I just intend to point at that by now it is not
matter that copy a table from Base or from Calc, because the paste works
just the same, using the same "Copy Table" dialog. But of course it can
change in the future and the way of the two copy&paste ( "copy from Calc,
paste in Base" and "copy from Base, paste in Base") can differentiate in
time, so it is indeed better to use the code of Base.

> >>> The Writer OLE-object feature (...) the same file import as Calc do
> >>> (...) which more usefull than the page with the same aim in
> >>> Base. More usefull means more options and a table showing the
> >>> expected result.
> >> Well, if the CSV setup screen in Base sucks, we can fix
> >> *that*. Possibly even use the same setup screen than in Calc? As in:
> >> merge the two.
> > As I see its not an easy hack. In Clalc the import UI is a
> > ModalDialog, while in Base it is a TabPage which are not a
> > 'mergeable' pair, at least I don't see the way.
> It is work, yes. If they cannot be merged, then this is unfortunate
> that we have to keep two implementations of the same feature, but we
> can still add the "right" features to the Base implementation.
> A few ideas:
>  - The Base wizard, when one chooses "connect to existing database"
>    and type "Text" and then clicks "next" fires up the Calc
>    ModalDialog instead of continuing with its TabPage procedure?
>  - The Base wizard, when one chooses "connect to existing database"
>    and type "Text" and then clicks "next" fires up a specialised
>    wizard that *does* have enough place?
> > Additionally in Base wizard there is no enough space for all options
> Well, this can be fixed either by the specialised wizard thing or by
> just enlarging the Base wizard to have enough place.
> > and for the table which are in the Calc csv import dialog.
> The table is a different issue. In the Base wizard "connect to
> existing database", one chooses a whole database (in the text/CSV
> case, a directory), not just a table, so it is not as natural to show
> a table. (which one from the multiple that are there?)
> The "import data" wizard needs to have an additional step (compared to
> the existing Base new/connect/open wizard) to choose which tables.
> > Plus the content of the mentioned table (containing expected result)
> > is already loaded in case of Calc, but in Base file-loading is
> > happen after setting the csv import options.
> The "import data" wizard can make a connection with the options as
> they stand, and then tear down the connection and reopen it each time
> the settings are changed.

Well, enhanching Base connection to text database (which will be used for
import too in my current plan) can be handled indenpedently from the
primary task (import) and because I will start working on my GSoC project
soon, this improvement remains for other times.


> I just imagine a 4th option to the start page of Base wizard, with
> > label "Import table(s) from existing database".
> To me this does not sound natural. That wizard is launched by File /
> New / Database. That's now where I would go looking to import data in
> an existing database.

Yes, you are right. In this case I will follow the original plan to add the
new option to the "Tasks" pane. Anyway this will the easiest way. The
wizard is indepedent from tha Base window and from the controller of this
window and so it can be difficult to make the controller to use the same
method as in case of paste or drag'n drop.

Best Regards,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the LibreOffice mailing list