站长网 MySql教程 将固定宽度,空格分隔的.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 2881

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

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/jc/mysql/2021/0523/4441.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部