2015-01-12 45 views
-2

我不在mysql或perl中編寫代碼,我正在編寫一個解析和xml文件並將數據插入到C++的mysql數據庫中的程序。我發現了一個腳本來做到這一點,我從我的C++代碼調用,但得到這個錯誤:使用perl插入數據到mysql數據庫

Unknown column 'subject' in 'field list' at ./xml_to_mysql.pl line 107

這裏是它確實插入腳本代碼:

#@_IMPORT_DOCUMENT_ 
# Open file for reading 

my $xp = XML::XPath->new (filename => $file_name); 
my $row_list = $xp->find ("//row"); 

print "Number of records: " . $row_list->size() . "\n"; 
foreach my $row ($row_list->get_nodelist()) 
{ 
    my @name; #array of column names 
    my @val; #array of column names 
    my $col_list = $row->find ("*"); 
    foreach my $col ($col_list->get_nodelist()) 
    { 
     push (@name, $col->getName()); 
     push (@val, $col->string_value()); 
    } 
    #construct INSERT statement, then execute it 
    my $stmt = "INSERT INTO $tbl_name (" 
       . join (",", @name) 
       . ") VALUES (" 
       . join (",", ("?") x scalar (@val)) 
       . ")"; 
    $dbh->do ($stmt, undef, @val); 
} 

線107包含該行的行:

$dbh->do ($stmt, undef, @val); 
+5

我在這個問題中找不到任何C++代碼。 –

+0

我只在C++代碼中運行這個腳本。錯誤來自腳本 –

+2

如果問題不在C++代碼中,並且不需要C++代碼來向我們展示問題,則我看不到C++標記的原因。如果我沒有弄錯,請刪除它。 –

回答

2

這個錯誤對我來說似乎很清楚。您正在生成一個SQL INSERT語句,它試圖將數據插入到名爲'subject'的列中。但是你插入數據的表沒有一個名爲'subject'的列。

假設你從XML文檔生成的SQL,該解決方案將是這兩個選項之一:

  1. 添加一個「主題」欄表
  2. 跳過處理XML元素將這些數據添加到SQL中

您選擇哪個選項完全取決於您的程序應該如何工作。我們無法在那裏得到任何幫助。

+0

實現了錯誤在表中。任何人都可以請幫助我從一個未知的XML文件獲得'創建表'的聲明。任何幫助將不勝感激 –