【发布时间】:2019-03-27 00:11:50
【问题描述】:
我正在尝试将 MySQL 表中的列中的数据直接提取到二进制文件中,该文件是一系列打包的无符号整数(每个 4 字节),可以使用 perl 解包函数读取。我如何读取这些数据的一个愚蠢的例子是
#!/usr/bin/env perl
my $input_file = 'packed_int_test_file_04';
open my $fh, '<:raw', $input_file
or die "Couldn't open $input_file for binary read: $!";
my $position = 0;
my $four_byte_buffer;
while ( read($fh, $four_byte_buffer, 4) ) {
my $foo_val = unpack("I", $four_byte_buffer);
print("Foo val at position $position is $foo_val \n");
$position++;
}
# OUTPUT:
# Foo val at position 0 is 1
# Foo val at position 1 is 2
# Foo val at position 2 is 3
# Foo val at position 3 is 4
# Foo val at position 4 is 5
# Foo val at position 5 is 6
我希望我可以直接从 MySQL 生成数据文件,如下所示(但我没有运气)
select (cast foo_val_integer as binary(4))
from bar_table
into outfile 'packed_int_test_file_04'
FIELDS terminated by ''
LINES terminated by '';
有没有办法让 MySQL 直接将一个 4 字节压缩的无符号整数序列输出到一个二进制文件中,这样 perl 可以通过这种方式读取?
【问题讨论】: