我有一个.txt文件,其中包含一堆格式化的数据,如下所示:
...
1 75175.18 95128.46
1 790890.89 795829.16
1 875975.98 880914.25
8 2137704.37 2162195.53
8 2167267.27 2375275.28
10 2375408.74 2763997.33
14 2764264.26 2804437.77
15 2804504.50 2881981.98
16 2882048.72 2887921.25
16 2993093.09 2998031.36
19 3004104.10 3008041.37
...
我试图将每一行作为条目加载到我的数据库中的表中,其中每列是不同的字段.我无法让MysqL正确分离所有数据.我认为问题来自于并非所有数字都以等距的空白量分开.
这是我到目前为止尝试过的两个查询(我也尝试过这些查询的几种变体):
LOAD DATA LOCAL INFILE
'/some/Path/segmentation.txt'
INTO TABLE clip (slideNum,startTime,endTime)
SET presID = 1;
LOAD DATA LOCAL INFILE
'/some/Path/segmentation.txt'
INTO TABLE clip
FIELDS TERMINATED BY ' '
LINES TERMINATED BY '\n'
(slideNum,endTime)
SET presID = 1;
任何想法如何让这个工作?
最佳答案
这些是我们所说的“固定宽度”记录,而LOAD DATA与它们不相符.选项:
>首先清除Excel中的数据,或
>将数据加载到只有1列的临时表中,将整个文本行推入该列.然后,您可以使用SUBSTR()和TRIM()将所需的列切割到最终表中.
>或者使用用户变量(@row),您可以在LOAD DATA语句中完成所有操作.
LOAD DATA LOCAL INFILE
'/some/Path/segmentation.txt'
INTO TABLE clip
(@row)
SET slideNum = TRIM(SUBSTR(@row,1,4)),startTime = TRIM(SUBSTR(@row,5,13)),endTime = TRIM(SUBSTR(@row,18,13))
;