gpt4 book ai didi

mysql - 当行的值为 'x' 时,跳过 MySQL LOAD DATA INFILE 语句中的行

转载 作者:行者123 更新时间:2023-11-29 09:03:21 24 4
gpt4 key购买 nike

背景:我有一个固定宽度的平面文件,其中包含大约 9400 万行数据。该文件来自 HCUP 全国住院样本 (NIS http://www.hcup-us.ahrq.gov/nisoverview.jsp ),它提供了过去 12 年的住院信息,每行一个单独的住院情况。为了进行分析,我将查询诊断代码 (ICD9-CM) 来识别具有各种诊断的患者。

固定宽度文件包含最多 15 个诊断代码的信息,这些代码作为列 dx1 到 dx15 提供。

create table `core` (`key` char (14),
`dx1` char (5),
`dx10` char (5),
`dx11` char (5),
`dx12` char (5),
`dx13` char (5),
`dx14` char (5),
`dx15` char (5),
`dx19` char (5),
`dx2` char (5),
`dx3` char (5),
`dx4` char (5),
`dx5` char (5),
`dx6` char (5),
`dx7` char (5),
`dx8` char (5),
`dx9` char (5),
plus various other columns of patient demographics...);

我将所有数据加载到名为 core 的 MySQL 表中,并且可以对 15 列建立索引。但是,将 dx* 列标准化为单独的 dx 表似乎是有利的,例如;

create table `dx` (
`key` char (14),
`icd9` char (5),
);

其中key是主core表的外键。为了将数据快速加载到 dx 中,我使用:

LOAD DATA LOCAL INFILE 'data.ASC' INTO TABLE `dx` (@var1) SET `key` = substr(@var1, 1, 14), `icd9` = substr(@var1, 74, 5);
LOAD DATA LOCAL INFILE 'data.ASC' INTO TABLE `dx` (@var1) SET `key` = substr(@var1, 1, 14), `icd9` = substr(@var1, 79, 5);
LOAD DATA LOCAL INFILE 'data.ASC' INTO TABLE `dx` (@var1) SET `key` = substr(@var1, 1, 14), `icd9` = substr(@var1, 84, 5);
etc for all 15 columns...

问题是固定宽度文件中的每一行中位数只有 3 个诊断代码,因此大多数 dx* 列都是空白(' ' [五个空白字符] )。因此,虽然 dx 表在加载数据后有 14.1 亿 (9400 万 * 15) 行,但大约 12.8 亿 (9400 万 * 12) 行是空白诊断代码。

我只是在索引之前删除它们并进行优化:

DELETE FROM `dx` WHERE `icd9` = "     ";
OPTIMIZE TABLE `dx`;
CREATE INDEX `icd9` ON `dx` (`icd9`);

但是,这需要很多时间。

问题:如果 ICD9 = ' '[五个空白字符],是否可以修改 LOAD DATA INFILE 语句以跳过该行,这会比我当前的 DELETE 和 OPTIMIZE 方法快得多吗?如果有的话,我想将此信息传递给 future 使用这些数据的研究人员。

最佳答案

Is it possible to modify the LOAD DATA INFILE statement to skip the row if

没有。有一个IGNORE选项。但是它使用行号而不是内联逻辑比较。

would this be significantly faster than my current DELETE and OPTIMIZE method

有可能。但是,因为这不是一个选项,所以没关系。

关于mysql - 当行的值为 'x' 时,跳过 MySQL LOAD DATA INFILE 语句中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7880818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com