免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1606 | 回复: 7
打印 上一主题 下一主题

[求助]如何把数组批量存入数据库 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-09 20:29 |只看该作者 |倒序浏览
本帖最后由 weininglzu 于 2012-10-13 21:16 编辑

求教:如何把数组内容批量存入sql特定表的某个字段
例如把@sum=qw/James Benney Rose Chandler Monica Joe/ 的内容存入到mysql的Film表的names字段中?
要用什么特殊的插件么?

问题解决的体会:
参考了yizhengming和7looki同鞋的代码之后,我又看了看书,把我的代码贴上上来,请大家批评交流。
  1. #!/usr/bin/perl -w
  2. use DBI;
  3. use strict;

  4. my $insert;
  5. my @sum=qw/James Benney Rose Chandler Monica Joe/ ;
  6. my $dbh=DBI->connect('DBI:mysql:test','user','password') or die "can not connect";
  7. foreach(@sum){
  8.                 $insert=$dbh->prepare("INSERT INTO test (feild_id) values('$_')");
  9.                 $insert->execute();
  10.                         }
  11. $insert->finish();
  12. $dbh->disconnect();
复制代码

论坛徽章:
0
2 [报告]
发表于 2012-10-09 20:33 |只看该作者
  1. DBI
复制代码

论坛徽章:
0
3 [报告]
发表于 2012-10-09 20:44 |只看该作者
我看了DBI的--help,但是没有找到相关的内容啊,
还是写不出啦。。。
麻烦您给个提示啥~

kk861123 发表于 2012-10-09 20:33

论坛徽章:
0
4 [报告]
发表于 2012-10-09 22:29 |只看该作者
  1. #! /usr/bin/perl -w
  2. use strict;
  3. use DBI;
  4. my $platform = "mysql";
  5. my $database = "your_database";
  6. my $host = "localhost";
  7. my $port = "3306";
  8. my $tablename = "Film";
  9. my $user = "your_user";
  10. my $pw = "your_password";
  11. my $dsn = "dbi:mysql:$database:localhost:3306";
  12. my $dbh = DBI->connect($dsn, $user, $pw);
  13. if (!$dbh) {
  14.     print "$DBI::errstr\n";
  15. }
  16. my $insert = "insert into File (names) values (?)";
  17. my $sth = $dbh->prepare($insert);
  18. foreach my $name (@sum) {
  19.     $sth->execute($name);
  20. }
  21. $sth->finish()
复制代码

论坛徽章:
2
技术图书徽章
日期:2013-11-23 01:55:57白羊座
日期:2013-12-08 15:48:16
5 [报告]
发表于 2012-10-09 22:41 |只看该作者
回复 1# weininglzu
  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;
  4. use DBI;

  5. my $db_name = "test";
  6. my $db_host = "192.168.1.200";
  7. my $db_port = "3306";
  8. my $db_user = "test";
  9. my $db_pass = "passwd123";

  10. my $database = "DBI:mysql:$db_name:$db_host:$db_port";

  11. my $dbh = DBI->connect( $database,$db_user,$db_pass );

  12. my @create = (

  13. "DROP TABLE IF EXISTS `Film`;",

  14. "CREATE TABLE `Film` (
  15.     `names` varchar(16) DEFAULT NULL,
  16.     PRIMARY KEY (`names`)
  17. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;",

  18. );

  19. my $create = $dbh->do( $_ ) foreach @create;

  20. my @sum = qw/James Benney Rose Chandler Monica Joe/;

  21. foreach my $name ( @sum ) {
  22.     my $sql = "insert into Film ( names ) values ( '$name' );";
  23.     my $instert = $dbh->do( $sql );
  24. }

  25. my $sth = $dbh->prepare( "select names from Film;" );
  26. $sth->execute() or die "can not execute SQL:$dbh->errstr";

  27. print "name\n";
  28. print "-" x 10,"\n";

  29. while(my $ref = $sth->fetchrow_hashref()) {
  30.     print "$ref->{'names'}\n";
  31. }

  32. $sth->finish;
  33. $dbh->disconnect;
复制代码
执行结果:
  1. [root@pink mysql]# perl test.pl
  2. name
  3. ----------
  4. Benney
  5. Chandler
  6. James
  7. Joe
  8. Monica
  9. Rose
复制代码
Perl菜鸟一个,写的比较丑,勿笑.

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
6 [报告]
发表于 2012-10-10 14:50 |只看该作者
还以为是讨论批量插入的性能。

论坛徽章:
0
7 [报告]
发表于 2012-10-10 19:38 |只看该作者
谢谢,谢谢
回复 4# yizhengming


   

论坛徽章:
0
8 [报告]
发表于 2012-10-10 19:39 |只看该作者
哈哈,我也是菜鸟,所以更容易看懂,谢谢啦!!
回复 5# 7looki


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP