The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
%PDF-1.1
%âãÏÓ
2 0 obj
<<
/Length 3286
>>
stream
/CS1 CS 0 SC
1 J 1 j 0.4 w 10 M []0 d
BX /GS1 gs EX
1 i 
54.03 706.95 m
79.23 706.95 l
90.03 717.75 m
90.03 742.95 l
522.03 742.95 m
522.03 717.75 l
532.83 706.95 m
558.03 706.95 l
S
BT
/F8 1 Tf
96 0 0 96 438 589.55 Tm
/CS1 cs 0 sc
0 Tc
0 Tw
(1)Tj
/F6 1 Tf
24 0 0 24 218.952 535.55 Tm
[(DBD::CSV and DBD::F)40(ile)]TJ
14 0 0 14 126 483.25 Tm
[(V)111(ersion)]TJ
/F8 1 Tf
10 0 0 10 126 465.25 Tm
[(V)111(ersion 0.1019.)]TJ
/F4 1 Tf
9 0 0 9 125.675 446.25 Tm
-0.072 Tc
(DBD::File)Tj
/F8 1 Tf
10 0 0 10 172.292 446.25 Tm
0 Tc
0.104 Tw
[(is an abstract general purpose dri)25(v)15(e)0(r)-354(for treating \214les as database tables and)]TJ
-4.6292 -1.3 TD
0.055 Tw
[(designed to be subclassed rather than used directly)65(.)]TJ
/F4 1 Tf
9 0 0 9 336.881 433.25 Tm
-0.072 Tc
(DBD::CSV)Tj
/F8 1 Tf
10 0 0 10 378.257 433.25 Tm
0 Tc
(is a subclass of)Tj
/F4 1 Tf
9 0 0 9 442.906 433.25 Tm
-0.072 Tc
(DBD::File)Tj
/F8 1 Tf
10 0 0 10 126 420.25 Tm
0 Tc
0.042 Tw
[(for w)10(orking with \214les that typically store one ro)25(w)-292(per te)15(xt line with \214elds separated with)]TJ
T*
0 Tw
[(a)-250(comma, semicolon or tab character)40(,)-250(typically called CSV \214les.)]TJ
/F6 1 Tf
14 0 0 14 126 378.45 Tm
[(A)30(uthor and Contact Details)]TJ
/F8 1 Tf
10 0 0 10 126 360.45 Tm
0.131 Tw
[(The dri)25(v)15(e)0(r)-381(author is Jochen W)40(iedmann. He can be contacted via the)]TJ
/F2 1 Tf
28.849 0 TD
[(dbi-user)10(s)]TJ
/F8 1 Tf
4.0932 0 TD
(mailing)Tj
-32.9421 -1.3 TD
(list.)Tj
/F6 1 Tf
14 0 0 14 126 318.65 Tm
0 Tw
[(Supported Database V)111(ersions and Options)]TJ
/F8 1 Tf
10 0 0 10 126 300.65 Tm
(The)Tj
/F4 1 Tf
9 0 0 9 144.864 300.65 Tm
-0.072 Tc
(DBD::File)Tj
/F8 1 Tf
10 0 0 10 191.577 300.65 Tm
0 Tc
0.114 Tw
[(dri)25(v)15(e)0(r)-364(w)10(orks with the)]TJ
/F4 1 Tf
9 0 0 9 283.627 300.65 Tm
-0.072 Tc
(SQL::Statement)Tj
/F8 1 Tf
10 0 0 10 354.089 300.65 Tm
0 Tc
[(module, v)15(ersion 0.1011 or later)55(.)]TJ
-22.8089 -1.3 TD
0.085 Tw
[(This module is a simple SQL parser and e)25(v)25(aluator)55(.)-335(I)0(n)-335(particular it is restricted to single)]TJ
T*
0 Tw
[(table queries. T)80(able joins are not supported.)]TJ
0 -1.9 TD
(The)Tj
/F4 1 Tf
9 0 0 9 144.479 255.65 Tm
-0.072 Tc
(DBD::CSV)Tj
/F8 1 Tf
10 0 0 10 186.057 255.65 Tm
0 Tc
0.075 Tw
[(dri)25(v)15(e)0(r)-325(internally uses the)]TJ
/F4 1 Tf
9 0 0 9 289.992 255.65 Tm
-0.072 Tc
(Text::CSV_XS)Tj
/F8 1 Tf
10 0 0 10 350.569 255.65 Tm
0 Tc
[(module, v)15(ersion 0.16 or later)40(,)-325(for)]TJ
-22.4569 -1.3 TD
0 Tw
(reading and writing CSV \214les.)Tj
0 -1.9 TD
0.055 Tw
[(It')55(s)-305(important to note that while just about e)25(v)15(eryone thinks the)15(y)-305(kno)25(w)-305(what the CSV \214le)]TJ
0 -1.3 TD
0.09 Tw
[(format is, there is actually no formal de\214nition of the format and there are man)15(y)-340(subtle)]TJ
T*
[(dif)25(ferences.)]TJ
/F6 1 Tf
14 0 0 14 126 134.002 Tm
0 Tw
(Connect Syntax)Tj
9 0 0 9 481.5 79.25 Tm
(1)Tj
ET
0.3 w 
126.03 668.79 m
486.03 668.79 l
S
0.4 w 
18.03 52.23 m
43.23 52.23 l
54.03 41.43 m
54.03 16.23 l
558.03 16.23 m
558.03 41.43 l
568.83 52.23 m
594.03 52.23 l
S
BT
/F8 1 Tf
6 0 0 6 57 16.25 Tm
(19 May 1999)Tj
ET
endstream
endobj
3 0 obj
<<
/ProcSet [/PDF /Text ]
/Font <<
/F2 4 0 R
/F4 5 0 R
/F6 6 0 R
/F8 7 0 R
>>
/ExtGState <<
/GS1 8 0 R
>>
/ColorSpace <<
/CS1 9 0 R
>>
>>
endobj
9 0 obj
[/CalGray <<
/Gamma 1.8
/WhitePoint [0.951 1 1.089]
>>
]
endobj
12 0 obj
<<
/Length 5837
>>
stream
BT
/F6 1 Tf
9 0 0 9 126 672.75 Tm
/CS1 cs 0 sc
BX /GS1 gs EX
0 Tc
0 Tw
[(2)-28123(DBD::CSV and DBD::F)40(ile)]TJ
ET
/CS1 CS 0 SC
1 J 1 j 0.3 w 10 M []0 d
1 i 
126.03 668.79 m
486.03 668.79 l
S
0.4 w 
18.03 713.79 m
43.23 713.79 l
54.03 724.59 m
54.03 749.79 l
558.03 749.79 m
558.03 724.59 l
568.83 713.79 m
594.03 713.79 l
S
BT
/F8 1 Tf
10 0 0 10 126 643.622 Tm
(The)Tj
/F4 1 Tf
9 0 0 9 143.724 643.622 Tm
-0.072 Tc
(DBI->connect\(\))Tj
/F8 1 Tf
10 0 0 10 213.046 643.622 Tm
0 Tc
(Data Source Name, or)Tj
/F2 1 Tf
9.1355 0 TD
(DSN)Tj
/F8 1 Tf
1.8889 0 TD
[(,)-250(can be one of the follo)25(wing:)]TJ
/F4 1 Tf
8 0 0 8 152.155 624.622 Tm
-0.072 Tc
(dbi:CSV:)Tj
0 -1.25 TD
(dbi:CSV:attrs)Tj
/F8 1 Tf
10 0 0 10 126 595.622 Tm
0 Tc
(where)Tj
/F4 1 Tf
9 0 0 9 154.058 595.622 Tm
-0.072 Tc
(attrs)Tj
/F8 1 Tf
10 0 0 10 182.087 595.622 Tm
0 Tc
0.145 Tw
(is an optional semicolon-separated list of)Tj
/F2 1 Tf
17.537 0 TD
[(k)10(e)30(y=value)]TJ
/F8 1 Tf
4.5282 0 TD
(pairs. Note that you)Tj
-27.674 -1.3 TD
0.045 Tw
(must not use)Tj
/F4 1 Tf
9 0 0 9 180.09 582.622 Tm
-0.072 Tc
(dbi:File:)Tj
/F8 1 Tf
10 0 0 10 223.163 582.622 Tm
0.295 Tc
[(,a)295(st)295(h)295(e)]TJ
/F4 1 Tf
9 0 0 9 254.742 582.622 Tm
-0.072 Tc
(DBD::File)Tj
/F8 1 Tf
10 0 0 10 300.768 582.622 Tm
0 Tc
[(dri)25(v)15(e)0(r)-295(i)0(s)-295(a)0(n)-295(abstract superclass and not usable)]TJ
-17.4768 -1.3 TD
0 Tw
(by itself.)Tj
0 -1.9 TD
[(Kno)25(wn attrib)20(utes include:)]TJ
/F2 1 Tf
0 -2.3 TD
[(f_dir=ltdir)37(ectorygt)]TJ
/F8 1 Tf
1.8 -1.7 TD
0.21 Tw
[(By def)10(ault \214les in the current directory are treated as tables. The attrib)20(ute)]TJ
/F2 1 Tf
32.2536 0 TD
(f_dir)Tj
/F8 1 Tf
-32.2536 -1.3 TD
0 Tw
[(mak)10(es the module open \214les in the gi)25(v)15(e)0(n)-250(directory)65(.)]TJ
/F2 1 Tf
-1.8 -1.7 TD
(csv_eol)Tj
T*
[(csv_sep_c)15(har)]TJ
T*
[(csv_quote_c)15(har)]TJ
T*
[(csv_escape_c)15(har)]TJ
/F8 1 Tf
1.8 -1.7 TD
0.07 Tw
[(These attrib)20(utes are used for describing the CSV \214le format in use. F)15(or e)15(xample, to)]TJ
0 -1.3 TD
(open)Tj
/F2 1 Tf
2.2581 0 TD
(/etc/passwd)Tj
/F8 1 Tf
4.6667 0 TD
0.064 Tw
[(,)-314(which is colon-separated and line-feed terminated, as a table, one)]TJ
-6.9248 -1.3 TD
0 Tw
[(w)10(ould use:)]TJ
/F4 1 Tf
8 0 0 8 170.155 380.622 Tm
-0.072 Tc
(csv_eol=\\n;csv_sep_char=:)Tj
/F8 1 Tf
10 0 0 10 144 363.622 Tm
0 Tc
0.147 Tw
[(The def)10(aults are)]TJ
/F4 1 Tf
9 0 0 9 214.899 363.622 Tm
-0.072 Tc
(\\r\\n)Tj
/F8 1 Tf
10 0 0 10 234.223 363.622 Tm
0 Tc
[(,)-397(comma \()]TJ
/F4 1 Tf
9 0 0 9 277.104 363.622 Tm
0 Tw
(,)Tj
/F8 1 Tf
10 0 0 10 282.179 363.622 Tm
0.147 Tw
(\), double-quote \()Tj
/F4 1 Tf
9 0 0 9 351.718 363.622 Tm
0 Tw
(")Tj
/F8 1 Tf
10 0 0 10 356.792 363.622 Tm
0.147 Tw
(\), and double-quote \()Tj
/F4 1 Tf
9 0 0 9 444.739 363.622 Tm
0 Tw
(")Tj
/F8 1 Tf
10 0 0 10 449.814 363.622 Tm
[(\))-397(respec-)]TJ
-30.5814 -1.3 TD
0.046 Tw
[(ti)25(v)15(ely)65(.)-296(All of these attrib)20(utes and def)10(aults are inherited from the)]TJ
/F4 1 Tf
9 0 0 9 404.584 350.622 Tm
-0.072 Tc
(Text::CSV_XS)Tj
/F8 1 Tf
10 0 0 10 464.87 350.622 Tm
0 Tc
(mod-)Tj
-32.087 -1.3 TD
(ule.)Tj
/F6 1 Tf
14 0 0 14 126 308.822 Tm
0 Tw
(Numeric Data Handling)Tj
/F8 1 Tf
10 0 0 10 126 290.822 Tm
0.038 Tw
[(W)40(ithout question, the main disadv)25(antage of the)]TJ
/F4 1 Tf
9 0 0 9 319.309 290.822 Tm
-0.072 Tc
(DBD::CSV)Tj
/F8 1 Tf
10 0 0 10 360.511 290.822 Tm
0 Tc
(module is the lack of appropri-)Tj
-23.4511 -1.3 TD
0.051 Tw
[(ate type handling. While reading a CSV table you ha)20(v)15(e)15( )-15(no)-302(w)10(ay to reliably determine the)]TJ
T*
0.183 Tw
[(correct data type of the \214elds. All \214elds look lik)10(e)-433(strings and are treated as such by)]TJ
T*
[(def)10(ault.)]TJ
0 -1.9 TD
(The)Tj
/F4 1 Tf
9 0 0 9 144.529 232.822 Tm
-0.072 Tc
(SQL::Statement)Tj
/F8 1 Tf
10 0 0 10 214.656 232.822 Tm
0 Tc
0.08 Tw
(module, and hence the)Tj
/F4 1 Tf
9 0 0 9 310.025 232.822 Tm
-0.072 Tc
(DBD::CSV)Tj
/F8 1 Tf
10 0 0 10 351.655 232.822 Tm
0 Tc
[(dri)25(v)15(e)0(r)40(,)40( )-40(accepts the numeric types)]TJ
-22.5655 -1.3 TD
0.064 Tw
(INTEGER and REAL in)Tj
/F4 1 Tf
9 0 0 9 229.328 219.822 Tm
-0.072 Tc
0.071 Tw
(CREATE TABLE)Tj
/F8 1 Tf
10 0 0 10 290.428 219.822 Tm
0 Tc
0.064 Tw
[(statements, b)20(ut the)15(y)-314(are al)10(w)10(ays stored as strings)]TJ
-16.4428 -1.3 TD
0 Tw
[(and, by def)10(ault, retrie)25(v)15(e)0(d)-250(a)0(s)-250(strings.)]TJ
0 -1.9 TD
0.115 Tw
[(It is possible to read indi)25(vidual columns as inte)15(gers or doubles, in which case the)15(y)-365(are)]TJ
0 -1.3 TD
0.024 Tw
[(con)40(v)15(erted to Perl')55(s)-274(internal data types IV and NV)129(,)-274(inte)15(ger and numeric v)25(alue respecti)25(v)15(ely)65(.)]TJ
T*
0 Tw
[(Unsigned v)25(alues are not supported.)]TJ
0 -2.957 TD
0.028 Tw
[(T)80(o)80( )-80(assign certain data types to columns, you ha)20(v)15(e)15( )-15(to)-278(create)]TJ
/F2 1 Tf
24.0251 0 TD
(metadata de\214nitions)Tj
/F8 1 Tf
8.167 0 TD
[(.)-278(The fol-)]TJ
-32.1921 -1.3 TD
0.059 Tw
[(lo)25(wing e)15(xample reads a table)]TJ
/F2 1 Tf
12.1663 0 TD
(table_name)Tj
/F8 1 Tf
4.9742 0 TD
0.058 Tw
(with columns)Tj
/F2 1 Tf
5.7837 0 TD
0 Tw
(I)Tj
/F8 1 Tf
0.333 0 TD
(,)Tj
/F2 1 Tf
0.5585 0 TD
(N)Tj
/F8 1 Tf
0.667 0 TD
[(,)-308(and)]TJ
/F2 1 Tf
2.3109 0 TD
(P)Tj
/F8 1 Tf
0.9195 0 TD
0.058 Tw
[(of type inte)15(ger)40(,)-308(dou-)]TJ
-27.713 -1.3 TD
0 Tw
[(ble, and string, respecti)25(v)15(ely:)]TJ
ET
18.03 52.23 m
43.23 52.23 l
54.03 41.43 m
54.03 16.23 l
558.03 16.23 m
558.03 41.43 l
568.83 52.23 m
594.03 52.23 l
S
BT
6 0 0 6 57 16.25 Tm
(19 May 1999)Tj
ET
endstream
endobj
13 0 obj
<<
/ProcSet [/PDF /Text ]
/Font <<
/F2 4 0 R
/F4 5 0 R
/F6 6 0 R
/F8 7 0 R
>>
/ExtGState <<
/GS1 8 0 R
>>
/ColorSpace <<
/CS1 9 0 R
>>
>>
endobj
15 0 obj
<<
/Length 3751
>>
stream
/CS1 CS 0 SC
1 J 1 j 0.4 w 10 M []0 d
BX /GS1 gs EX
1 i 
18.03 713.79 m
43.23 713.79 l
54.03 724.59 m
54.03 749.79 l
558.03 749.79 m
558.03 724.59 l
568.83 713.79 m
594.03 713.79 l
S
BT
/F4 1 Tf
8 0 0 8 152.155 646.622 Tm
/CS1 cs 0 sc
-0.072 Tc
0 Tw
(my $dbh = DBI->connect\("DBI:CSV:"\);)Tj
0 -1.25 TD
($dbh->{csv_tables}->{table_name}->{types} =)Tj
2.111 -1.25 TD
[([)-527(C<Text::CSV_XS>::IV\(\), C<Text::CSV_XS>::NV\(\),)]TJ
1.0555 -1.25 TD
(C<Text::CSV_XS>::PV\(\) ];)Tj
-3.1665 -1.25 TD
[(#)-527(Note, we assume a certain order of I, N and P!)]TJ
T*
(my $sth = $dbh->prepare\("SELECT * FROM foo"\);)Tj
/F6 1 Tf
14 0 0 14 126 567.822 Tm
0 Tc
(String Data Handling)Tj
/F8 1 Tf
10 0 0 10 126 549.822 Tm
0.016 Tw
[(Similar to numeric v)25(alues,)]TJ
/F4 1 Tf
9 0 0 9 234.117 549.822 Tm
-0.072 Tc
(DBD::CSV)Tj
/F8 1 Tf
10 0 0 10 275.102 549.822 Tm
0 Tc
(accepts more data types in)Tj
/F4 1 Tf
9 0 0 9 383.615 549.822 Tm
-0.072 Tc
0.018 Tw
(CREATE TABLE)Tj
/F8 1 Tf
10 0 0 10 443.764 549.822 Tm
0 Tc
(statements)Tj
-31.7764 -1.3 TD
0.117 Tw
[(than it really supports. Y)110(ou can use)]TJ
/F4 1 Tf
9 0 0 9 276.64 536.822 Tm
-0.072 Tc
(CHAR\()Tj
/F2 1 Tf
10 0 0 10 300.714 536.822 Tm
0 Tc
0 Tw
(n)Tj
/F8 1 Tf
0.5 0 TD
[(\))-367(and)]TJ
/F4 1 Tf
9 0 0 9 330.5 536.822 Tm
-0.072 Tc
(VARCHAR\()Tj
/F2 1 Tf
10 0 0 10 368.823 536.822 Tm
0 Tc
(n)Tj
/F8 1 Tf
0.5 0 TD
0.117 Tw
[(\))-367(with arbitrary numbers)]TJ
/F2 1 Tf
10.4658 0 TD
0 Tw
(n)Tj
/F8 1 Tf
0.5 0 TD
(,)Tj
-35.7481 -1.3 TD
[(BLOB, or TEXT)74(,)-250(b)20(ut in f)10(act these are al)10(w)10(ays BLOBs, in a loose kind of w)10(a)0(y)65(.)]TJ
0 -1.9 TD
0.035 Tw
[(The one underlying string type can store an)15(y)-285(binary data including embedded NUL char)20(-)]TJ
0 -1.3 TD
0 Tw
[(acters. Ho)25(we)25(v)15(e)0(r)40(,)40( )-40(man)15(y)-250(other CSV tools may chok)10(e)-250(i)0(f)-250(g)0(i)25(v)25( )240(en)-250(such data.)]TJ
/F6 1 Tf
14 0 0 14 126 463.022 Tm
(Date Data Handling)Tj
/F8 1 Tf
10 0 0 10 126 445.022 Tm
(No date or time types are directly supported.)Tj
/F6 1 Tf
14 0 0 14 126 416.222 Tm
(LONG/BLOB Data Handling)Tj
/F8 1 Tf
10 0 0 10 126 398.222 Tm
[(BLOBs are equi)25(v)25(alent to strings. The)15(y)-250(are only limited in size by a)20(v)25(ailable memory)65(.)]TJ
/F6 1 Tf
14 0 0 14 126 369.422 Tm
(Other Data Handling issues)Tj
/F8 1 Tf
10 0 0 10 126 351.422 Tm
(The)Tj
/F4 1 Tf
9 0 0 9 145.347 351.422 Tm
-0.072 Tc
(type_info_all\(\))Tj
/F8 1 Tf
10 0 0 10 221.042 351.422 Tm
0 Tc
0.162 Tw
[(method is supported and returns the types V)135(ARCHAR, CHAR,)]TJ
-9.5042 -1.3 TD
0 Tw
[(INTEGER, REAL, BLOB and TEXT)74(.)]TJ
/F6 1 Tf
14 0 0 14 126 309.622 Tm
[(T)37(ransactions, Isolation and Loc)10(king)]TJ
/F8 1 Tf
10 0 0 10 126 291.622 Tm
[(The dri)25(v)15(e)0(r)-250(doesn')18(t)-250(support transactions.)]TJ
0 -1.9 TD
0.049 Tw
[(No e)15(xplicit locks are supported. T)80(ables are lock)10(ed while statements are e)15(x)15(ecuted, b)20(ut the)]TJ
0 -1.3 TD
0 Tw
(lock is immediately released once the statement is completed.)Tj
/F6 1 Tf
14 0 0 14 126 230.822 Tm
[(No-T)92(able Expression Select Syntax)]TJ
/F8 1 Tf
10 0 0 10 126 212.822 Tm
[(Y)110(o)0(u)-250(can only retrie)25(v)15(e)15( )-15(table data. It is not possible to select constants.)]TJ
/F6 1 Tf
14 0 0 14 126 134.002 Tm
[(T)92(able J)40(oin Syntax)]TJ
9 0 0 9 126 672.75 Tm
[(DBD::CSV and DBD::F)40(ile )-28123(3)]TJ
ET
0.3 w 
126.03 668.79 m
486.03 668.79 l
S
0.4 w 
18.03 52.23 m
43.23 52.23 l
54.03 41.43 m
54.03 16.23 l
558.03 16.23 m
558.03 41.43 l
568.83 52.23 m
594.03 52.23 l
S
BT
/F8 1 Tf
6 0 0 6 57 16.25 Tm
(19 May 1999)Tj
ET
endstream
endobj
16 0 obj
<<
/ProcSet [/PDF /Text ]
/Font <<
/F2 4 0 R
/F4 5 0 R
/F6 6 0 R
/F8 7 0 R
>>
/ExtGState <<
/GS1 8 0 R
>>
/ColorSpace <<
/CS1 9 0 R
>>
>>
endobj
18 0 obj
<<
/Length 3039
>>
stream
BT
/F6 1 Tf
9 0 0 9 126 672.75 Tm
/CS1 cs 0 sc
BX /GS1 gs EX
0 Tc
0 Tw
[(4)-28123(DBD::CSV and DBD::F)40(ile)]TJ
ET
/CS1 CS 0 SC
1 J 1 j 0.3 w 10 M []0 d
1 i 
126.03 668.79 m
486.03 668.79 l
S
0.4 w 
18.03 713.79 m
43.23 713.79 l
54.03 724.59 m
54.03 749.79 l
558.03 749.79 m
558.03 724.59 l
568.83 713.79 m
594.03 713.79 l
S
BT
/F8 1 Tf
10 0 0 10 126 643.622 Tm
[(T)80(able joins are not supported.)]TJ
/F6 1 Tf
14 0 0 14 126 614.822 Tm
[(T)92(able and Column Names)]TJ
/F8 1 Tf
10 0 0 10 126 596.822 Tm
0.195 Tw
[(T)80(able and column names are case sensiti)25(v)15(e)0(.)-445(H)0(o)25(w)0(e)25(v)25( )435(er)40(,)40( )-40(you should consider that table)]TJ
0 -1.3 TD
0.105 Tw
[(names are in f)10(act \214le names, so tables)]TJ
/F2 1 Tf
16.1879 0 TD
-0.105 Tc
[(Fo)-105(o)]TJ
/F8 1 Tf
1.861 0 TD
0 Tc
(and)Tj
/F2 1 Tf
1.799 0 TD
(foo)Tj
/F8 1 Tf
1.633 0 TD
(may both be present with the same)Tj
-21.4809 -1.3 TD
0.776 Tw
[(data. Ho)25(we)25(v)15(e)0(r)40(,)40( )-40(the)15(y)-1026(may be subject to dif)25(ferent metadata de\214nitions in)]TJ
/F4 1 Tf
9 0 0 9 125.675 557.822 Tm
-0.072 Tc
($dbh->{'csv_tables'})Tj
/F8 1 Tf
10 0 0 10 220.996 557.822 Tm
0 Tc
0 Tw
(.)Tj
-9.4996 -1.9 TD
[(See )-250(for)-250(more details on table and column names.)]TJ
/F6 1 Tf
14 0 0 14 126 510.022 Tm
(Case Sensitivity of LIKE Operator)Tj
/F8 1 Tf
10 0 0 10 126 492.022 Tm
0.097 Tw
[(T)80(w)80( )277(o)-347(dif)25(ferent LIKE operators are supported. LIKE is case sensiti)25(v)15(e)0(,)-347(whereas CLIKE is)]TJ
0 -1.3 TD
(not.)Tj
/F6 1 Tf
14 0 0 14 126 450.222 Tm
[(Ro)25(w)-250(I)0(D)]TJ
/F8 1 Tf
10 0 0 10 126 432.222 Tm
0 Tw
[(Ro)25(w)-250(IDs are not supported.)]TJ
/F6 1 Tf
14 0 0 14 126 403.422 Tm
[(A)30(utomatic K)25(ey or Sequence Generation)]TJ
/F8 1 Tf
10 0 0 10 126 385.422 Tm
[(Neither automatic k)10(e)15(ys)-250(nor sequences are supported.)]TJ
/F6 1 Tf
14 0 0 14 126 356.622 Tm
[(A)30(utomatic Ro)25(w)-250(Numbering and Ro)25(w)-250(Count Limiting)]TJ
/F8 1 Tf
10 0 0 10 126 338.622 Tm
[(Neither automatic ro)25(w)-250(numbering nor ro)25(w)-250(count limitations are supported.)]TJ
/F6 1 Tf
14 0 0 14 126 309.822 Tm
[(P)40(arameter Binding)]TJ
/F8 1 Tf
10 0 0 10 126 291.822 Tm
(Question marks are supported as placeholders, as in:)Tj
/F4 1 Tf
8 0 0 8 152.155 272.822 Tm
-0.072 Tc
($dbh->do\("INSERT INTO A VALUES \(?, ?\)", undef, $id, $name\);)Tj
/F8 1 Tf
10 0 0 10 126 253.822 Tm
0 Tc
(The)Tj
/F4 1 Tf
9 0 0 9 143.724 253.822 Tm
-0.072 Tc
(:1)Tj
/F8 1 Tf
10 0 0 10 156.049 253.822 Tm
0 Tc
(placeholder style is not supported.)Tj
/F6 1 Tf
14 0 0 14 126 225.022 Tm
(Stored Procedures)Tj
/F8 1 Tf
10 0 0 10 126 207.022 Tm
(Stored procedures are not supported.)Tj
/F6 1 Tf
14 0 0 14 126 134.002 Tm
[(T)92(able Metadata)]TJ
ET
18.03 52.23 m
43.23 52.23 l
54.03 41.43 m
54.03 16.23 l
558.03 16.23 m
558.03 41.43 l
568.83 52.23 m
594.03 52.23 l
S
BT
/F8 1 Tf
6 0 0 6 57 16.25 Tm
(19 May 1999)Tj
ET
endstream
endobj
19 0 obj
<<
/ProcSet [/PDF /Text ]
/Font <<
/F2 4 0 R
/F4 5 0 R
/F6 6 0 R
/F8 7 0 R
>>
/ExtGState <<
/GS1 8 0 R
>>
/ColorSpace <<
/CS1 9 0 R
>>
>>
endobj
21 0 obj
<<
/Length 4360
>>
stream
/CS1 CS 0 SC
1 J 1 j 0.4 w 10 M []0 d
BX /GS1 gs EX
1 i 
18.03 713.79 m
43.23 713.79 l
54.03 724.59 m
54.03 749.79 l
558.03 749.79 m
558.03 724.59 l
568.83 713.79 m
594.03 713.79 l
S
BT
/F8 1 Tf
10 0 0 10 126 643.622 Tm
/CS1 cs 0 sc
0 Tc
0 Tw
[(By def)10(ault the dri)25(v)15(e)0(r)-250(e)15(xpects the column names being stored in the tables \214rst ro)25(w)65(,)65( )-65(as)-250(in:)]TJ
/F4 1 Tf
8 0 0 8 177.487 624.622 Tm
-0.072 Tc
(login:password:uid:gid:comment:shell:homedir)Tj
0 -1.25 TD
(root:s34hj34n34jh:0:0:Superuser:/bin/bash:/root)Tj
/F8 1 Tf
10 0 0 10 126 595.622 Tm
0 Tc
(If column names are not present, you may speci\214y column names via:)Tj
/F4 1 Tf
8 0 0 8 177.487 576.622 Tm
-0.072 Tc
($dbh->{csv_tables}->{$table}->{skip_rows} = 0;)Tj
T*
($dbh->{csv_tables}->{$table}->{col_names} =)Tj
2.111 -1.25 TD
([qw\(login password uid gid comment shell homedir\)];)Tj
/F8 1 Tf
10 0 0 10 126 537.622 Tm
0 Tc
[(in which case the \214rst ro)25(w)-250(i)0(s)-250(handled as a data ro)25(w)65(.)]TJ
0 -1.9 TD
0.081 Tw
[(If column names are not supplied and not read from the \214rst ro)25(w)65(,)65( )-65(the names)]TJ
/F2 1 Tf
31.7231 0 TD
(col0)Tj
/F8 1 Tf
1.7219 0 TD
0 Tw
(,)Tj
/F2 1 Tf
0.5806 0 TD
(col1)Tj
/F8 1 Tf
1.7219 0 TD
(,)Tj
-35.5475 -1.3 TD
0.2 Tc
(... )Tj
1.9187 0 TD
0 Tc
0.319 Tw
[(are generated automatically)65(.)-569(Column names can be retrie)25(v)15(e)0(d)-569(via the standard)]TJ
/F4 1 Tf
9 0 0 9 125.675 492.622 Tm
-0.072 Tc
($sth->{NAME})Tj
/F8 1 Tf
10 0 0 10 185.497 492.622 Tm
0 Tc
[(attrib)20(ute.)]TJ
-5.9497 -1.9 TD
(The)Tj
/F2 1 Tf
1.8983 0 TD
(NULLABLE)Tj
/F8 1 Tf
5.233 0 TD
0.093 Tw
[(attrib)20(ute returns an array of all ones. Other metadata attrib)20(utes are not)]TJ
-7.1313 -1.3 TD
(supported.)Tj
0 -1.9 TD
0.039 Tw
(The table names, or \214le names, can be read via)Tj
/F4 1 Tf
9 0 0 9 319.545 441.622 Tm
-0.072 Tc
($dbh->table_info\(\))Tj
/F8 1 Tf
10 0 0 10 408.26 441.622 Tm
0 Tc
(or)Tj
/F4 1 Tf
9 0 0 9 419.158 441.622 Tm
-0.072 Tc
($dbh->tables\(\))Tj
/F8 1 Tf
10 0 0 10 126 428.622 Tm
0 Tc
0 Tw
(as usual.)Tj
/F6 1 Tf
14 0 0 14 126 399.822 Tm
[(Driv)15(er-specific Attrib)20(utes and Methods)]TJ
/F8 1 Tf
10 0 0 10 126 381.822 Tm
0.207 Tw
[(Besides the attrib)20(utes)]TJ
/F2 1 Tf
9.4049 0 TD
(f_dir)Tj
/F8 1 Tf
1.9449 0 TD
0 Tw
(,)Tj
/F2 1 Tf
0.7068 0 TD
(csv_eol)Tj
/F8 1 Tf
2.9988 0 TD
(,)Tj
/F2 1 Tf
0.7067 0 TD
[(csv_sep_c)15(har)]TJ
/F8 1 Tf
5.4277 0 TD
(,)Tj
/F2 1 Tf
0.7067 0 TD
[(csv_quote_c)15(har)]TJ
/F8 1 Tf
6.7733 0 TD
(and)Tj
/F2 1 Tf
1.9006 0 TD
[(csv_sep_c)15(har)]TJ
/F8 1 Tf
-30.5703 -1.3 TD
[(that ha)20(v)15(e)15( )-15(already been discussed abo)15(v)15(e)0(,)-250(the most important database handle attrib)20(ute is:)]TJ
/F4 1 Tf
8 0 0 8 152.155 349.822 Tm
-0.072 Tc
($dbh->{csv_tables})Tj
9 0 0 9 125.675 330.822 Tm
(csv_tables)Tj
/F8 1 Tf
10 0 0 10 177.057 330.822 Tm
0 Tc
0.106 Tw
(is used for specifying table metadata. It is an hash ref with table names as)Tj
-5.1057 -1.3 TD
0 Tw
[(k)10(e)15(ys, the v)25(alues being hash refs with the follo)25(wing attrib)20(utes:)]TJ
/F2 1 Tf
0 -2.3 TD
(\214le)Tj
/F8 1 Tf
1.8 -1.7 TD
[(The \214le name being associated to the table. By def)10(ault, the \214le name is)]TJ
/F4 1 Tf
9 0 0 9 143.675 264.822 Tm
-0.072 Tc
($dbh->{f_dir}/$table)Tj
/F8 1 Tf
10 0 0 10 238.996 264.822 Tm
0 Tc
(.)Tj
/F2 1 Tf
-11.2996 -1.7 TD
(col_names)Tj
/F8 1 Tf
1.8 -1.7 TD
(An array ref of column names.)Tj
/F2 1 Tf
-1.8 -1.7 TD
[(skip_r)45(ows)]TJ
/F8 1 Tf
1.8 -1.7 TD
0.119 Tw
[(This number of ro)25(ws will be read from the top of the \214le before reading the table)]TJ
0 -1.3 TD
0.025 Tw
[(data, and the \214rst of those will be treated as an array of column names. Ho)25(we)25(v)15(e)0(r)40(,)40( )-40(the)]TJ
/F2 1 Tf
T*
(col_names)Tj
/F8 1 Tf
4.5267 0 TD
0 Tw
[(attrib)20(ute tak)10(es precedence.)]TJ
/F2 1 Tf
-6.3267 -3.857 TD
(types)Tj
/F6 1 Tf
9 0 0 9 126 672.75 Tm
[(DBD::CSV and DBD::F)40(ile )-28123(5)]TJ
ET
0.3 w 
126.03 668.79 m
486.03 668.79 l
S
0.4 w 
18.03 52.23 m
43.23 52.23 l
54.03 41.43 m
54.03 16.23 l
558.03 16.23 m
558.03 41.43 l
568.83 52.23 m
594.03 52.23 l
S
BT
/F8 1 Tf
6 0 0 6 57 16.25 Tm
(19 May 1999)Tj
ET
endstream
endobj
22 0 obj
<<
/ProcSet [/PDF /Text ]
/Font <<
/F2 4 0 R
/F4 5 0 R
/F6 6 0 R
/F8 7 0 R
>>
/ExtGState <<
/GS1 8 0 R
>>
/ColorSpace <<
/CS1 9 0 R
>>
>>
endobj
24 0 obj
<<
/Length 3298
>>
stream
BT
/F6 1 Tf
9 0 0 9 126 672.75 Tm
/CS1 cs 0 sc
BX /GS1 gs EX
0 Tc
0 Tw
[(6)-28123(DBD::CSV and DBD::F)40(ile)]TJ
ET
/CS1 CS 0 SC
1 J 1 j 0.3 w 10 M []0 d
1 i 
126.03 668.79 m
486.03 668.79 l
S
0.4 w 
18.03 713.79 m
43.23 713.79 l
54.03 724.59 m
54.03 749.79 l
558.03 749.79 m
558.03 724.59 l
568.83 713.79 m
594.03 713.79 l
S
BT
/F8 1 Tf
10 0 0 10 144 643.622 Tm
0.049 Tw
(This is an array ref of the)Tj
/F4 1 Tf
9 0 0 9 250.707 643.622 Tm
-0.072 Tc
(Text::CSV_XS)Tj
/F8 1 Tf
10 0 0 10 311.023 643.622 Tm
0 Tc
[(type v)25(alues for the corresponding columns.)]TJ
-16.7023 -1.3 TD
0.09 Tw
[(Three types are supported and their v)25(alues are de\214ned by the)]TJ
/F4 1 Tf
9 0 0 9 399.035 630.622 Tm
-0.072 Tc
(IV\(\))Tj
/F8 1 Tf
10 0 0 10 418.359 630.622 Tm
0 Tc
0 Tw
(,)Tj
/F4 1 Tf
9 0 0 9 423.929 630.622 Tm
-0.072 Tc
(NV\(\))Tj
/F8 1 Tf
10 0 0 10 443.253 630.622 Tm
0 Tc
[(,)-339(and)]TJ
/F4 1 Tf
9 0 0 9 466.657 630.622 Tm
-0.072 Tc
(PV\(\))Tj
/F8 1 Tf
10 0 0 10 144 617.622 Tm
0 Tc
(functions in the)Tj
/F4 1 Tf
9 0 0 9 208.391 617.622 Tm
-0.072 Tc
(Text::CSV_XS)Tj
/F8 1 Tf
10 0 0 10 268.214 617.622 Tm
0 Tc
(package.)Tj
-14.2214 -1.9 TD
0.045 Tw
[(There are no dri)25(v)15(e)0(r)-295(speci\214c statement handle attrib)20(utes and no pri)25(v)25(ate methods for either)]TJ
0 -1.3 TD
0 Tw
(type of handle.)Tj
/F6 1 Tf
14 0 0 14 126 556.822 Tm
[(P)55(ositioned updates and deletes)]TJ
/F8 1 Tf
10 0 0 10 126 538.822 Tm
(Positioned updates and deletes are not supported.)Tj
/F6 1 Tf
14 0 0 14 126 510.022 Tm
[(Dif)18(f)10(erences from the DBI Specification)]TJ
/F8 1 Tf
10 0 0 10 126 492.022 Tm
[(The statement handle attrib)20(utes)]TJ
/F2 1 Tf
12.7552 0 TD
(PRECISION)Tj
/F8 1 Tf
5.0547 0 TD
(,)Tj
/F2 1 Tf
0.5 0 TD
(SCALE)Tj
/F8 1 Tf
2.9448 0 TD
[(,)-250(and)]TJ
/F2 1 Tf
2.1939 0 TD
(TYPE)Tj
/F8 1 Tf
2.5839 0 TD
(are not supported.)Tj
-26.0325 -1.9 TD
0.046 Tw
[(Also note that man)15(y)-296(statement attrib)20(utes cease to be a)20(v)25(ailable after fetching all the result)]TJ
0 -1.3 TD
0 Tw
[(ro)25(ws or calling the)]TJ
/F4 1 Tf
9 0 0 9 202.63 460.022 Tm
-0.072 Tc
(finish\(\))Tj
/F8 1 Tf
10 0 0 10 243.454 460.022 Tm
0 Tc
(method.)Tj
/F6 1 Tf
14 0 0 14 126 431.222 Tm
[(URLs to More Database/Driv)15(er Specific Inf)10(ormation)]TJ
/F4 1 Tf
8 0 0 8 152.155 416.222 Tm
-0.072 Tc
(http://www.whatis.com/csvfile.htm)Tj
/F6 1 Tf
14 0 0 14 126 387.422 Tm
0 Tc
(Concurrent use of Multiple Handles)Tj
/F8 1 Tf
10 0 0 10 126 369.422 Tm
0.122 Tw
[(The number of database handles is limited by memory only)65(.)-372(I)0(t)-372(i)0(s)-372(recommended to use)]TJ
T*
0 Tw
[(multiple database handles for dif)25(ferent table formats.)]TJ
0 -1.9 TD
(There are no limitations on the use of multiple statement handles from the same)Tj
/F4 1 Tf
9 0 0 9 447.286 337.422 Tm
-0.072 Tc
($dbh)Tj
/F8 1 Tf
10 0 0 10 466.61 337.422 Tm
0 Tc
(.)Tj
-34.061 -1.9 TD
[(The dri)25(v)15(e)0(r)-250(i)0(s)-250(belie)25(v)15(e)0(d)-250(t)0(o)-250(b)0(e)-250(completely thread safe.)]TJ
ET
18.03 52.23 m
43.23 52.23 l
54.03 41.43 m
54.03 16.23 l
558.03 16.23 m
558.03 41.43 l
568.83 52.23 m
594.03 52.23 l
S
BT
6 0 0 6 57 16.25 Tm
(19 May 1999)Tj
ET
endstream
endobj
25 0 obj
<<
/ProcSet [/PDF /Text ]
/Font <<
/F2 4 0 R
/F4 5 0 R
/F6 6 0 R
/F8 7 0 R
>>
/ExtGState <<
/GS1 8 0 R
>>
/ColorSpace <<
/CS1 9 0 R
>>
>>
endobj
26 0 obj
<<
/Type /Halftone
/HalftoneType 1
/HalftoneName (Default)
/Frequency 60
/Angle 45
/SpotFunction /Round
>>
endobj
8 0 obj
<<
/Type /ExtGState
/SA false
/OP false
/BG /Identity
/UCR /Identity
/HT /Default
>>
endobj
4 0 obj
<<
/Type /Font
/Subtype /Type1
/Name /F2
/Encoding 27 0 R
/BaseFont /Times-Italic
>>
endobj
5 0 obj
<<
/Type /Font
/Subtype /Type1
/Name /F4
/Encoding 27 0 R
/BaseFont /Courier
>>
endobj
6 0 obj
<<
/Type /Font
/Subtype /Type1
/Name /F6
/Encoding 27 0 R
/BaseFont /Times-BoldItalic
>>
endobj
7 0 obj
<<
/Type /Font
/Subtype /Type1
/Name /F8
/Encoding 27 0 R
/BaseFont /Times-Roman
>>
endobj
27 0 obj
<<
/Type /Encoding
/Differences [ 0/asciicircum/asciitilde/Scaron/Zcaron/scaron/zcaron/Ydieresis/trademark
/quotesingle 94/circumflex 126/tilde 128/quotesinglbase/guillemotleft/guillemotright/bullet/florin
/fraction/perthousand/dagger/daggerdbl/endash/emdash/ff/fi
/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut/dotaccent
/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
/quotedblbase/OE/Lslash 164/currency 166/brokenbar 168/dieresis/copyright/ordfeminine
/guilsinglleft/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
/threesuperior/acute/mu 183/periodcentered/cedilla/onesuperior/ordmasculine/guilsinglright
/onequarter/onehalf/threequarters 192/Agrave/Aacute/Acircumflex/Atilde/Adieresis
/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave
/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex
/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis
/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis
/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave
/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex
/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis
/yacute/thorn/ydieresis
]
>>
endobj
1 0 obj
<<
/Type /Page
/Parent 10 0 R
/Resources 3 0 R
/Contents 2 0 R
>>
endobj
11 0 obj
<<
/Type /Page
/Parent 10 0 R
/Resources 13 0 R
/Contents 12 0 R
>>
endobj
14 0 obj
<<
/Type /Page
/Parent 10 0 R
/Resources 16 0 R
/Contents 15 0 R
>>
endobj
17 0 obj
<<
/Type /Page
/Parent 10 0 R
/Resources 19 0 R
/Contents 18 0 R
>>
endobj
20 0 obj
<<
/Type /Page
/Parent 10 0 R
/Resources 22 0 R
/Contents 21 0 R
>>
endobj
23 0 obj
<<
/Type /Page
/Parent 10 0 R
/Resources 25 0 R
/Contents 24 0 R
>>
endobj
10 0 obj
<<
/Type /Pages
/Kids [1 0 R 11 0 R 14 0 R 17 0 R 20 0 R 23 0 R]
/Count 6
/MediaBox [0 0 595 841]
>>
endobj
28 0 obj
<<
/Type /Catalog
/Pages 10 0 R
>>
endobj
29 0 obj
<<
/CreationDate (D:19990519120134)
/Producer (\376\377\000A\000c\000r\000o\000b\000a\000t\000 \000D\000i\000s\000t\000i\000l\000l\000e\000r\000 \0003\000.\0000\0001\000 \000f\000o\000r\000 \000W\000i\000n\000d\000o\000w\000s)
/Creator (groff version 1.11)
>>
endobj
xref
0 30
0000000000 65535 f
0000026977 00000 n
0000000017 00000 n
0000003361 00000 n
0000025288 00000 n
0000025397 00000 n
0000025501 00000 n
0000025614 00000 n
0000025178 00000 n
0000003531 00000 n
0000027526 00000 n
0000027066 00000 n
0000003610 00000 n
0000009506 00000 n
0000027158 00000 n
0000009677 00000 n
0000013487 00000 n
0000027250 00000 n
0000013658 00000 n
0000016756 00000 n
0000027342 00000 n
0000016927 00000 n
0000021346 00000 n
0000027434 00000 n
0000021517 00000 n
0000024874 00000 n
0000025045 00000 n
0000025722 00000 n
0000027651 00000 n
0000027708 00000 n
trailer
<<
/Size 30
/Root 28 0 R
/Info 29 0 R
/ID [<7e27dd21cce59f005f5b8615f664b42b><7e27dd21cce59f005f5b8615f664b42b>]
>>
startxref
27991
%%EOF