2015-01-12 37 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文件获得'创建表'的声明。任何帮助将不胜感激 –