On Nov 25, 2013, at 11:02 PM, Jens Rehsack <rehs...@gmail.com> wrote:

>>   
>> db:csv?f_dir=data&f_dir_search=foo&f_dir_search=bar&f_ext=.csv/r&f_lock=2&f_encoding=utf8&csv_eol=%0D%0A&csv_sep_char=,&csv_quote_char=%22&csv_escape_char=%22&csv+class=Text::CSV_XS&csv_null=1&RaiseError=1&PrintError=1&FetchHashKeyName=NAME_lc&csv_tables=%7B%22info%22%3A%20%7B%22f_file%22%3A%22info_csv%22%7D%7D
> 
> Happy hacking, when you want type that on command line. DBD::CSV (and other
> Pure-Perl drivers) is designed for flexibility and quick setup, not for
> expensive configuration and long-term running.

Actually, I take that back. I am only focused on having a URI format for the 
DSN, not the attribute hash --- at least for now. So I would revise that URI to 
just "dbi:csv:". Unless SQLEngine was modified to support additional parameters 
in the DSN, all the other stuff would have to be passed via the attribute hash.

> You can’t - this is a clear point in DBI::DBD::SqlEngine at the moment.

Is that something that might change in the future? I tend to think of the DSN 
parts as being specific to a connection and specifiable by an end user --- such 
as the database name, server, username, password, etc. I tend to think of the 
attribute hash as for the developer, such as transaction and error handling. 
They are also more specific to the language -- I don't need a PrintError option 
in my Java app; it has some other API.

> All I say to you: if you want DBI supporting that - keep in mind the
> whole requirements. If you just want to do another DBI extension, with
> limited coverage and usage - feel free.

I don't know if I want the DBI to support it or not. I would like to get 
feedback on how best to represent database connection information in URIs, and 
what I might be overlooking. I am not sure what to do about attribute hashes, 
and so am ignoring them for now.

>> But this discussion orthogonal to my original questions, which were:
>> 
>> * Should I use a hierarchical scheme like JDBC? I’m leaning heavily toward 
>> this now, just need a decent prefix, I'm thinking "dbms", e.g., 
>> "dbms:csv:foo“.
> 
> You can’t - because there is no „foo“ database for DBD::CSV at the moment.
> Conceptual issue. In current state of development, those pure-perl DBMS
> simulating drivers have no persistent metadata as mysql and postgresql have.

Well, that's just a matter of how you define that. Maybe "foo" is the name of 
the directory holding CSV files, and the file names are table names. I realize 
this is not how DBD::CSV currently works, just pointing out that these things 
are a matter of definition and implementation.

> I think you miss my point - I don’t say that you’re wrong, I say you
> lack a lot of requirements. When you don’t intend to support those
> pure-perl drivers, you’re fine and please go ahead. When you intend
> full DBI driver support, DBDI (https://github.com/timbunce/DBDI) could
> enlighten you. Following that concept would allow you a migration to p6
> one fine day ;)

I don't intend to support any drivers at all. I want to define a common URI 
standard for connecting to database engines without regard to any programming 
language or API at all.

Best,

David

Reply via email to