in reply to How to optimized mysql insert into table
This looks like complete nonsense:
There is no need to concatenate all of the lines into a single string. Process each line of the input file separately because each line of the input file will presumably become a new record in the DB. Please review what substr does. From your substr expressions, I don't see anything changing about version or jobnumber.while(<FH>){ $data .= $_; }
As a first step, I would recommend that you write some code that correctly parses your input file and just prints the jobnumber and version for each line. If you cannot extract the version and jobnumber for each line in the file, you are doomed - no amount of DBI help will matter.#!/usr/bin/perl use strict; use warnings; my $data=<<EOF; 00032463000000001000000010000010014110662004071664629003128182 O# 00032463000000002000000010000010014110662004071664729003070909 O# 00032463000000003000000010000010014110662004071664829003861044 O# 00032463000000004000000010000010014110662004071664929003005555 O# EOF open (my $IN, '<', \$data) or die "unable to open input file"; while (my $line = <$IN>) { next if $line =~ /^s*$/; #skip blank lines, common infile fault #usually at the beginning or at the end my $version = substr($line,0,3); #substr() from your code... my $jobnumber = substr($line,4,5); print "version=$version jobnumber=$jobnumber\n"; #once the above works, DBI insert code goes here... } __END__ Code above prints: version=000 jobnumber=24630 version=000 jobnumber=24630 version=000 jobnumber=24630 version=000 jobnumber=24630
|
|---|