- 论坛徽章:
- 0
|
原帖由 mantou 于 2008-4-26 21:50 发表 ![]()
DBD::CSV
不知道该如何来用。 首先需要将csv导入生成一个table。那么,第一行怎么办?
我现在已经通过常规数组的方法可以合并。但总感觉对于csv这种格式化的数据,采用土办法不是很明智。 - use DBI;
- use strict;
- #my $table='employee';
- my $dbh = DBI->connect("DBI:CSV:/dirContainedCSV") || die "$!\n";
- eval{
- $dbh->{'csv_tables'}->{'tableOne'} = { 'file' => '1.csv'};
- $dbh->{'csv_tables'}->{'tableTwo'} = { 'file' => '2.csv'};
- my @combined=();
- push (@combined,@{$dbh->selectall_arrayref(q{SELECT * FROM tableOne})});
- push (@combined,@{$dbh->selectall_arrayref(q{SELECT * FROM tableTwo})});
- my $combinedTable='combinedTable.csv';
- my $sth=$dbh->prepare( qq{CREATE TABLE $combinedTable (
- sn integer,
- date CHAR(10),
- name CHAR(10),
- hobby CHAR(100)
- )}
- );
- $sth->execute() or die "Cannot execute: " . $sth->errstr();
- $sth->finish();
- for(0..@combined-1){
- shift @{$combined[$_]};
- $dbh->do(
- qq{INSERT INTO $combinedTable values (?,?,?,?)},
- {},$_,@{$combined[$_]}
- );
- }
- };
- $dbh->disconnect;
- die $@ if $@;
复制代码
刚好最近在做数据库。如果有个文件数据量大的话,先count一个,然后再追加另一个就行,不多就合并数组好了。方便。
[ 本帖最后由 smonkey0 于 2008-4-27 10:38 编辑 ] |
|