Обсуждение: copying tables
Hi. I am trying to copy tables. I want to copy a table in one database to a
table in another database. The tables are identical. Here is to code and the
error when using DBI. Can I just use postgresQL somehow?
Thank you.
Table = fs648
+----------------------------------+----------------------------------+-------+
| Field | Type | Length|
+----------------------------------+----------------------------------+-------+
| day | text | var |
| type | text | var |
| flight | text | var |
| scene | text | var |
| pattern | int4 | 4 |
| leg | text | var |
| id | int4 not null | 4 |
+----------------------------------+----------------------------------+-------+
#!/usr/bin/perl -wT
use strict;
use DBI;
my $dbh = DBI->connect("dbi:Pg:dbname=misr_l1;
host=sundog.larc.nasa.gov;port=5432", "", "")
or die "Can't connect\n"; #connect to database
my $sth = $dbh->prepare("SELECT * from fs648");
$sth->execute();
my $array_ref = $sth->fetchall_arrayref();
$sth->finish;
$dbh->disconnect or warn "Disconnection failed\n";
$dbh = DBI->connect("dbi:Pg:dbname=misr_l0;
host=sundog.larc.nasa.gov;port=5432", "", "")
or die "Can't connect\n"; #connect to database
foreach my $row ($array_ref)
{ my ($day, $type, $flight, $scene, $pattern, $leg, $id) = @$row;
my $dayq = $dbh->quote($day);
my $typeq = $dbh->quote($type);
my $flightq = $dbh->quote($flight);
my $sceneq = $dbh->quote($scene);
my $legq = $dbh->quote($leg);
my $rows = $dbh->do("INSERT INTO fs648 VALUES ( $dayq, $typeq,
$flightq, $sceneq, $pattern, $legq, $id)");
}
$dbh->disconnect or warn "Disconnection failed\n";
DBD::Pg::db do failed: ERROR: parser: parse error at or near "xe1154"
$pattern and $id are integers and so don't need quoting. It doesn't work if I
quote them anyway.
Thanks again!
Bob Kernell
Research Scientist
Analytical Services & Materials, Inc.
NASA Atmospheric Sciences Competency
Radiation and Aerolsols Branch
email: r.w.kernell@larc.nasa.gov
tel: 757-827-4631
Check out pg_dump: basically, this works -- pg_dump -t tablename olddbname > table.out followed by psql -d newdbname < table.out or psql -d newdbname -f table.out On Tue, 20 Feb 2001, Robert Kernell wrote: > Hi. I am trying to copy tables. I want to copy a table in one database to a > table in another database. The tables are identical. Here is to code and the > error when using DBI. Can I just use postgresQL somehow? > > Thank you. > > Bob Kernell > Research Scientist > Analytical Services & Materials, Inc. > NASA Atmospheric Sciences Competency > Radiation and Aerolsols Branch > email: r.w.kernell@larc.nasa.gov > tel: 757-827-4631 > -- James Eric Lawson Research Publications Editor III National Simulation Resource eric@bioeng.washington.edu - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Everyday language is a part of the human organism and is no less complicated than it. - Ludwig Wittgenstein (1889-1951) [Tractatus Logico-Philosophicus, 1921]
use pg_dump with the -t option.
--rob
----- Original Message -----
From: "Robert Kernell" <kernell@sundog.larc.nasa.gov>
To: <pgsql-general@postgresql.org>; <pgsql-novice@postgresql.org>;
<dbi-users-subscribe@perl.org>
Sent: Tuesday, February 20, 2001 10:51 AM
Subject: copying tables
> Hi. I am trying to copy tables. I want to copy a table in one database to
a
> table in another database. The tables are identical. Here is to code and
the
> error when using DBI. Can I just use postgresQL somehow?
>
> Thank you.
>
> Table = fs648
>
+----------------------------------+----------------------------------+-----
--+
> | Field | Type |
Length|
>
+----------------------------------+----------------------------------+-----
--+
> | day | text |
var |
> | type | text |
var |
> | flight | text |
var |
> | scene | text |
var |
> | pattern | int4 |
4 |
> | leg | text |
var |
> | id | int4 not null |
4 |
>
+----------------------------------+----------------------------------+-----
--+
>
> #!/usr/bin/perl -wT
>
> use strict;
> use DBI;
>
> my $dbh = DBI->connect("dbi:Pg:dbname=misr_l1;
> host=sundog.larc.nasa.gov;port=5432", "", "")
> or die "Can't connect\n"; #connect to database
> my $sth = $dbh->prepare("SELECT * from fs648");
> $sth->execute();
> my $array_ref = $sth->fetchall_arrayref();
> $sth->finish;
> $dbh->disconnect or warn "Disconnection failed\n";
> $dbh = DBI->connect("dbi:Pg:dbname=misr_l0;
> host=sundog.larc.nasa.gov;port=5432", "", "")
> or die "Can't connect\n"; #connect to database
> foreach my $row ($array_ref)
> { my ($day, $type, $flight, $scene, $pattern, $leg, $id) = @$row;
> my $dayq = $dbh->quote($day);
> my $typeq = $dbh->quote($type);
> my $flightq = $dbh->quote($flight);
> my $sceneq = $dbh->quote($scene);
> my $legq = $dbh->quote($leg);
> my $rows = $dbh->do("INSERT INTO fs648 VALUES ( $dayq, $typeq,
> $flightq, $sceneq, $pattern, $legq, $id)");
> }
> $dbh->disconnect or warn "Disconnection failed\n";
>
> DBD::Pg::db do failed: ERROR: parser: parse error at or near "xe1154"
>
> $pattern and $id are integers and so don't need quoting. It doesn't work
if I
> quote them anyway.
>
> Thanks again!
>
> Bob Kernell
> Research Scientist
> Analytical Services & Materials, Inc.
> NASA Atmospheric Sciences Competency
> Radiation and Aerolsols Branch
> email: r.w.kernell@larc.nasa.gov
> tel: 757-827-4631
>
>
Does pg_dump work with BLOBs yet ?
terry
> ----------
> From: Rob Arnold[SMTP:rob@cabrion.com]
> Sent: Tuesday, February 20, 2001 9:31 PM
> To: Robert Kernell; pgsql-general@postgresql.org;
> pgsql-novice@postgresql.org; dbi-users-subscribe@perl.org
> Subject: Re: copying tables
>
> use pg_dump with the -t option.
>
> --rob
>
> ----- Original Message -----
> From: "Robert Kernell" <kernell@sundog.larc.nasa.gov>
> To: <pgsql-general@postgresql.org>; <pgsql-novice@postgresql.org>;
> <dbi-users-subscribe@perl.org>
> Sent: Tuesday, February 20, 2001 10:51 AM
> Subject: copying tables
>
>
> > Hi. I am trying to copy tables. I want to copy a table in one database
> to
> a
> > table in another database. The tables are identical. Here is to code and
> the
> > error when using DBI. Can I just use postgresQL somehow?
> >
> > Thank you.
> >
> > Table = fs648
> >
> +----------------------------------+----------------------------------+---
> --
> --+
> > | Field | Type |
> Length|
> >
> +----------------------------------+----------------------------------+---
> --
> --+
> > | day | text |
> var |
> > | type | text |
> var |
> > | flight | text |
> var |
> > | scene | text |
> var |
> > | pattern | int4 |
> 4 |
> > | leg | text |
> var |
> > | id | int4 not null |
> 4 |
> >
> +----------------------------------+----------------------------------+---
> --
> --+
> >
> > #!/usr/bin/perl -wT
> >
> > use strict;
> > use DBI;
> >
> > my $dbh = DBI->connect("dbi:Pg:dbname=misr_l1;
> > host=sundog.larc.nasa.gov;port=5432", "", "")
> > or die "Can't connect\n"; #connect to database
> > my $sth = $dbh->prepare("SELECT * from fs648");
> > $sth->execute();
> > my $array_ref = $sth->fetchall_arrayref();
> > $sth->finish;
> > $dbh->disconnect or warn "Disconnection failed\n";
> > $dbh = DBI->connect("dbi:Pg:dbname=misr_l0;
> > host=sundog.larc.nasa.gov;port=5432", "", "")
> > or die "Can't connect\n"; #connect to database
> > foreach my $row ($array_ref)
> > { my ($day, $type, $flight, $scene, $pattern, $leg, $id) = @$row;
> > my $dayq = $dbh->quote($day);
> > my $typeq = $dbh->quote($type);
> > my $flightq = $dbh->quote($flight);
> > my $sceneq = $dbh->quote($scene);
> > my $legq = $dbh->quote($leg);
> > my $rows = $dbh->do("INSERT INTO fs648 VALUES ( $dayq, $typeq,
> > $flightq, $sceneq, $pattern, $legq, $id)");
> > }
> > $dbh->disconnect or warn "Disconnection failed\n";
> >
> > DBD::Pg::db do failed: ERROR: parser: parse error at or near "xe1154"
> >
> > $pattern and $id are integers and so don't need quoting. It doesn't work
> if I
> > quote them anyway.
> >
> > Thanks again!
> >
> > Bob Kernell
> > Research Scientist
> > Analytical Services & Materials, Inc.
> > NASA Atmospheric Sciences Competency
> > Radiation and Aerolsols Branch
> > email: r.w.kernell@larc.nasa.gov
> > tel: 757-827-4631
> >
> >
>
>