微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将固定宽度,空格分隔的.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))
;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐