sql >> Database >  >> RDS >> Mysql

Gegevens invoegen van Perl naar MysQL

Uw gebruik van de $db_config variabele lijkt me verdacht. Of je config-hash is vreemd, of je gebruikt waarden in plaats van sleutels.

Je hebt ons niet laten zien waar $db_config is ingesteld, maar ik vermoed dat het er ongeveer zo uitziet:

$db_config = {
  name => 'Top_Data',
  host => '127.0.0.1',
  port => 3306,
  username => 'someone',
  password => 'a secret',
};

En dan zou je het als volgt gebruiken:

my $dsn = "DBI:mysql:database=".$db_config->{name}.";host=".$db_config->{host}.";port=".$db_config->{port};

Merk op dat ik de sleutelnamen heb gebruikt (name , host en port ) in plaats van de waarden (Top_Data , 127.0.0.1 en 3306 ).

Ik zal je er ook op wijzen dat je dit enigszins kunt vereenvoudigen door Perl's mogelijkheid te gebruiken om variabelen uit te breiden binnen een string met dubbele aanhalingstekens.

my $dsn = "DBI:mysql:database=$db_config->{name};host=$db_config->{host};port=$db_config->{port}";

Er is later nog een probleem met je SQL-statement.

my $sql = 'insert into Top(Load_Average, CPU_us, CPU_id, CPU-wa, CPU_hi, 
           CPU_si, CPU_st, Swap_Total, Swap_Free, Swap_Used, Memory_Total, 
           Memeory_Free, Memory_Used, Memory_Buff, Date) 
           values(float,float,float,float,float,float,float,float,
           varchar,varchar,varchar,varchar,varchar,varchar,date)';

De waarden die u zou moeten invoegen, zijn de feitelijke gegevensitems. Dus waar je de strings "float", "varchar" of "date" hebt, zou je eigenlijk data-items moeten hebben (een getal met drijvende komma, een string of een datum).

Tot slot, nadat u uw verklaring hebt voorbereid, hoeft u deze niet door te geven aan de execute() methode. U moet echter kijken naar het gebruik van bindpunten in uw SQL en het doorgeven van uw feitelijke gegevensitems aan de execute() bel




  1. Een aangepaste SQL Server Docker-afbeelding maken bovenop de officiële afbeelding

  2. dynamisch getal van waar-voorwaarde in orakel sql

  3. Tel het aantal elementen in een door komma's gescheiden tekenreeks in Oracle

  4. Hoe krijg ik de laatst ingevoerde ID?