簡體   English   中英

如何使用Perl將文本文件加載到MySQL中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM