Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

RE: Re: Reading from a file and writing the content into a database

by Anonymous Monk
on Apr 01, 2000 at 01:44 UTC ( #6621=note: print w/replies, xml ) Need Help??

in reply to Re: Reading from a file and writing the content into a database
in thread Reading from a file and writing the content into a database

#!perl/bin/perl use win32; use Win32::ODBC; use CGI qw(:standard); $data="ibd_lib.txt"; $test="test.txt"; my (@statement); # array of sql statements my $db=new Win32::ODBC("DSN=bisx;UID=;PWD="); ### report connection status if (!$db) { print "\nunable to connect to database!\n"; die(); } ### Open File for Reading open(FR, "< $data") || die "cannot open $data for reading: $!"; ###open(FW, "> $test") || die "cannot create $test: $!"; while(<FR>) { ### Write to Database push @statement, "INSERT INTO UserTestingE (ID) VALUES (\t$_\n)"; ### print FW $_; } ### Close the file close(FR) || die "cant close $ibd_lib: $!"; ###close(FW) || die "cant close $test: $!" ### Close the database $db->Close();
I don't have the DBI module i get this error: Can't locate in @INC (@INC contains:

The only way that i know how to write to an access databse is using the Win32::ODBC module just like above. I just don't know if i'm doing it right or what is going on. Please take a look at it and tell me what you think. the file is a comma delimited file that has about 10,000 lines and i need to take each line and insert it one after another in an access database. Thanks, Elvin

  • Comment on RE: Re: Reading from a file and writing the content into a database
  • Download Code

Replies are listed 'Best First'.
RE: RE: Re: Reading from a file and writing the content into a database
by btrott (Parson) on Apr 01, 2000 at 02:19 UTC
    You may want to try and download DBI, simply because it's good. But I'll try and give you some pointers with what you're using.

    For one thing, you build the @statements array but you never actually use it! Is this a test version that you have here, or what? The data won't get into the database without you actually calling the insert statements on the db. From quickly scanning the docs, it looks like you'd call the "Sql" method for each of your insert statements. So:

    for my $sql (@statements) { $db->Sql($sql); }
    Another thing: if you have a file with comma-delimited fields, why aren't you split-ing each line of the file somehow? I highly doubt that you actually want to insert the comma-separated string into the database verbatim... do you?

    With that in mind, you'll have to create a table in the database that reflects the layout of your comma-delimited file, so that you can split the line, then insert each field into its appropriate field in the db.

    Also, in your SQL statements:

    push @statement, "INSERT INTO UserTestingE (ID) VALUES (\t$_\n)";
    Why do you have the "\t" and "\n" values? Do you actually want those in your db fields? Also, you need to quote the value:
    push @statement, "INSERT INTO UserTestingE (ID) VALUES ('\t$_\n')";
    Else you'll get a SQL error, I think. W/r/t the quoting, you'd be better off using some built-in method to quote values (like built-in to Win32::ODBC), but I didn't see one when I looked at the docs.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://6621]
Discipulus personae non gratae..
[Corion]: Your Mother: Hmm - I have the pmdev nodelet, which has some links, but I'm not sure what links/guides there are
[Corion]: pmdev wiki maybe?
[Discipulus]: uh neat karl!
[Your Mother]: Both good things to try, thank you!
[karlgoethebier]: Discipulus: see my scratchpad for <<>>...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (9)
As of 2017-07-21 08:17 GMT
Find Nodes?
    Voting Booth?
    I came, I saw, I ...

    Results (319 votes). Check out past polls.