1

私は perl とこのフォーラムに比較的慣れていません。mySql LOAD DATA INFILE ステートメントに perl DBI を使用して、csv ファイルを mySQL データベースにアップロードしようとしています。ただし、execute ステートメントは undef 値を返します。ただし、SELECT または DESC ステートメントを使用すると、正常に動作します。クエリ内の一重引用符と中かっこがエラーの原因であると思われますが、デバッグ方法がわかりません。

   #!/usr/bin/perl -w
   use strict;
   use warnings;
   use File::Basename;

    use DBI;
    use DBD::mySQL;
    my $data_path="D:\\NickD\\Project\\StockData\\"; 
    my $db = "TestMMDB";
    my $user = "user";
    my $pass ="pass";
    my $host = "localhost";
    my $query ="";
    my @row;   

    my @files = glob("$data_path*.csv");
    DBI->trace(1);


    my $dbh = DBI->connect("dbi:mysql:$db:$host",$user,$pass);

    foreach my $file(@files){
        my $filename = basename($file);
        my ($db_table,$date) = split("_",$filename);       

        $query = q{LOAD DATA INFILE ? INTO TABLE ? FIELDS TERMINATED BY ',' (Date,Symbol,Open,High,Low,Close,Volume)};      

    my $sqlQuery = $dbh->prepare($query);
    my $rv = $sqlQuery->execute($file,$db.".".$db_table) or die "Oops!: Can't execute the query :".$sqlQuery->errstr;
    while (@row = $sqlQuery->fetchrow_array()) {
        print "@row\n";
        } 
    }
    my $rc = $dbh->disconnect();
    exit(0);

すべてのヘルプは大歓迎です。

4

0 に答える 0