2013-06-11 1 views
0

Что у меня есть:Perl вставки в БД MySQL

  • MySQL DB
  • таблица с 9 столбцов.
  • Массив, который генерируется со значениями, которые необходимо вставить в таблицу.

Примечание: массив, который получает генерируется автоматически будет иметь различную длину каждый раз, но длина не будет превышать количество столбцов, которые у меня есть в таблице.

Имена столбцов будут такими, как field1, field2, field3 и т. Д., Где имя всегда будет содержать поле слова, а затем число.

Я думаю, что это можно сделать с помощью функции Perl map, но я не настолько хорош в использовании этой функции и нуждаюсь в руководстве.

Я хотел бы сделать что-то вроде этого:

while ((@Row) = $sql_stmt_h->fetchrow_array()) { 
my $sql=" 
    INSERT INTO tablename (field$x) 
    VALUES (map function here ... which also needs to increment the $x in field$x so that it moves onto the next column name which would be field2 if we put the first value in field1.)"; 
} 

ответ

0

Создать свой Вставить оператор для вставки всех полей с помощью ? заполнителей для данных.

my $sql=" 
INSERT INTO tablename (field1 field2 field3 field4 field5 field6 field7 field8 field9) 
VALUES (? ? ? ? ? ? ? ? ?)"; 
my $insert_sth = $dbh->prepare($sql); 

Затем сделайте что-нибудь подобное.

my @new_data = get_array_with_random_length(); 
splice(@new_data, @new_data, 0, undef x (9 - @new_data)); #pad @newdata to 9 elements w/ undefs (DBI will xlate to NULL) 
$insert_sth->execute(@new_data);