将固定宽度,空格分隔的.txt文件加载到mySQL中

前端之家收集整理的这篇文章主要介绍了将固定宽度,空格分隔的.txt文件加载到mySQL中前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个.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))
;

猜你在找的MySQL相关文章