perl导入文本至mysql_文本导入数据库(Perl)

当插入大量数据入数据库时,每个用insert效率将很低,使用postgresql的copy,将提高很大的效率.

把要insert的数据存入一个文本文件,每次插入数据存为一行,每行中每个数据中间的分隔符自定,然后用copy

把文本导入数据库.

#################################################################

#!/usr/bin/perl -w

use strict;

use DBI;

my $driver="Pg";

my $database="postgres";

my $host="localhost";

my $user="username";

my $passwd="password";

my $port = 5432;

my $temp=/home/ty/temp;

my $dbh=DBI->conncet("DBI:$mydirver:dbname=$database;

host=$host;port=$port",$user,$passwd )

or die $DBI::errstr;                        #连接数据库

my $create=qq{create table tbsa ( id integer,

name varchar(10),

age integer,

sex varchar(5),

primary key (id) ) };        #建表的sql语句

my $copy=qq{copy tbsa from $temp with delimiter '|' };          #copy的sql语句

$dbh->do($create);                     #创建一个表

open( TEMP,">$temp");                  #打开临时文件,用于保存待插入的值.

my $line=join "|",(1,ty,22,boy);       #该语法把四个待插入的数据中间用"|"分开.

print TEMP "$line\n";                  #把输入存入文件,用\n结尾.

close TEMP;                            #此处必须关闭文件,不然copy将再次打开文件而出错.

$dbh->do($copy);                       #把TEMP句柄的文件导入数据库.

$dbh->disconnect();

#################################################################

在文本中,必须要满足格式要求,copy语句设置的分隔符参数要和文本的分隔符相同,文本一行为一次insert

数据.更多细节查看postgres的copy.

http://www.kuqin.com/postgreSQL8.1_doc/sql-copy.html

阅读(1820) | 评论(0) | 转发(0) |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值