加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

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

发布时间:2021-05-23 16:27:16 所属栏目: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 288198

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

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!