[英]How can I load a text file into MySQL using Perl?
誰能告訴我如何使用Perl從文本文件讀取數據並將其存儲在MySQL數據庫中?
例如:
StudentID Name Dept
1 Chellappa IT
2 Vijay CSE
3 AAA ECE
99.9%的時間,針對這種情況的最佳方法是使用特定於目標數據庫的本機大容量裝載工具。 在這種情況下,它將是LOAD DATA INFILE
或等效的命令行mysqlimport
。
我們可以使用Perl將數據整理成正確的格式:
$ perl -wlne 'next if $. == 1; s/\s+/\t/g; print;' input.txt > output.txt
然后使用mysqlimport
加載它:
$ mysqlimport [options] db_name output.txt
如果您的示例確實像您發布的示例一樣簡單,則實際上可以通過為mysqlimport
指定一些其他選項來按原樣加載文件:
$ mysqlimport --ignore-lines=1 --fields-terminated-by=' ' [options ...] db_name input.txt
使用DBI
模塊連接數據庫。 讀取輸入文件並將其拆分並存儲到數組中。 現在將數組值插入數據庫。
這是一種方法(請注意,此代碼未經測試):
#!/usr/bin/perl
use warnings;
use strict;
use DBI;
my $dsn = "DBI:mysql:host=hostname; database=dbname; port=portname";
# database connection
my $dbh = DBI->connect($dsn,"username","password") or die "Couldn't connect to MySQL server: $!";
my $query = 'INSERT INTO tableName (StudentID,Name,Dept) VALUES (?,?,?)';
my $sth = $dbh->prepare($query) or die "Prepare failed: " . $dbh->errstr();
open my $fh, "<", "file.txt" or die $!;
<$fh>; #skip header
while (<$fh>)
{
chomp;
my @vals = split;
$sth->execute(@vals);
}
close $fh;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.