我们遇到了在Linux环境中运行Perl ODBC连接到MYSQL实例的奇怪行为。
我们在MYSQL中有数据表(数百万行),我们需要从字段中汇总一些数据元素。由于表的结构,将整个表转储到文本文件(SELECT * FROM
INTO OUTFILE)要比在mysql中运行查询快得多。
我们在Perl脚本中聚合所需的三个字段,将它们保存到制表符分隔的文本文件中,然后通过ODBC的INSERT INTO查询将它们推入MYSQL到单独的表中。
my $loadtable="LOAD DATA INFILE '/home/path_to_file/".$state."_parsed.txt' INTO TABLE ".$state."_tablename
FIELDS TERMINATED BY '\t'
IGNORE 1 LINES;";
我们发现ODBC调用未加载所有行。我们找不到模式。我们检查了数据:制表符分隔的格式正确,新行正确,并且没有超出范围的内容。
但是,如果我们尝试通过SQLYOG(直接查询,无ODBC)将.txt文件加载到MYSQL中,则会插入所有行。
我们有检查文件中的ASCII高低字符,却没有找到。