mysql - Perl 防止相同的数据 INSERT 到 MYSQL

标签 mysql perl

我有一个散列的散列数组,我对其进行区分,并将其相应地插入到单个表位置,以便它适合列名。代码如下:

my $dsn = "DBI:mysql:saferoute";
my $username = "root";
my $password = "password";

my %attr = (PrintError=>0,RaiseError=>1);
my $dbh = DBI->connect($dsn,$username,$password,\%attr);

while (my ($year, $year_ref) = each(%$stat) ){
    while (my ($state, $state_ref) = each(%$year_ref) ){
            while (my ($city, $city_ref) = each(%$state_ref) ){
                    foreach my $crime_ref (@$city_ref){
                            while (my ($crime, $crime_stat) = each (%$crime_ref) ){
                                    my $sql = qq|INSERT INTO LOCATION (COUNTRY, STATE, DISTRICT, CITY, LOCALITY_NAME, PIN_CODE, SAFETY_RANKING) VALUES ('IN', '$state', '$city', '$city', 'city', '11111', 1)|;
                                    my $stmt = $dbh->do($sql);
                    }
                    }
            }
    }
}
$dbh->disconnect();

代码运行良好并相应地插入数据。但每当我运行上面的脚本时,它都会填充数据。例如,我第一次运行它时,它会创建 1000 行,下次它会创建 2000 行,依此类推。有关如何阻止它的任何建议,以便不会将相同类型的数据插入到单独的行中。谢谢。

最佳答案

  1. 添加条件语句
  2. 从 SQL 中提取已生成的数据
  3. 检查它是否等于您插入的内容
  4. 如果数据!=数据插入

还有一些您可能也感兴趣的模块 类::DBI、Rose::DB、DBIx::Class

看看这些...可能会让你的生活更轻松...祝你好运 Perl ORM database module comparison

关于mysql - Perl 防止相同的数据 INSERT 到 MYSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20578774/

相关文章:

mysql - Mariadb 设置数据目录位置失败

mysql - 你如何在 XAMPP 中设置 "max_allowed_packet"?

sql - (Perl)使用SQL::Abstract为DBI创建查询

perl - 如何基于现有数组的一部分形成一个新数组

perl - 从 Moose 类中获取所有属性作为散列的更好方法

perl - 将 perl 脚本导出到 windows

php - Laravel 将 "wherenotin"与 "like"运算符链接到 "orWhere"

mysql - SQL JOIN 带条件

mysql - 备份 XAMPP 目录并尝试复制 mysql 目录,但引擎错误中不存在 phpmyadmin.pma__tracking'

perl - 使用 Catalyst::Controller::REST 进行错误处理的最佳实践是什么