2012-07-27 79 views
0

现在我有这种情况发生有所有数据的文本文件在以下string工作彼此相邻,如:AB005103012ES-** OF**MID115748607.83插入逗号为文本的MYSQL

不过,我需要上传此到MYSQL数据库,因此理想情况下,转化的格式将有代码,像这样用逗号分开:

AB00,51,0301,2,ES-**, ,O,F,**,M,I,D,1,157486,07.83 

我处理大约14万行和逗号将每一次出现在相同的字符位置。正如第一个逗号在每行中的第四个字符之后出现,第二个逗号将出现在每行的第六个逗号之后,依此类推。

有没有什么办法可以在MYSQL中很快达到这个目的呢,或者说失败了,另一个简单的程序可以轻松运行吗?

回答

0

您可以使用INFILE和SUBSTR(substring)命令。

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

要装入固定宽度列的文本文件,我使用的形式:

LOAD DATA LOCAL INFILE '<file name>' INTO TABLE <table> 
(@var1) 
SET Date=str_to_date(SUBSTR(@var1,3,10),'%m/%d/%Y'), 
Time=SUBSTR(@var1,14,8), 
WindVelocity=SUBSTR(@var1,26,5), 
WindDirection=SUBSTR(@var1,33,3), 
WindCompass=SUBSTR(@var1,38,3), 
WindNorth=SUBSTR(@var1,43,6), 
WindEast=SUBSTR(@var1,51,6), 
WindSamples=SUBSTR(@var1,61,4); 
+0

在您的例子是那些诸如WindVelocity的字段已经被定义为表的一部分或者是不同表的一部分?并且@ var1是第一个表的属性? – user1556352 2012-07-27 01:12:31

+0

是的,这些是被导入到表中的列。 @ var1表示由INFILE处理的给定行。您基本上必须放入列名称和适当的SUBSTR命令,以指定每列中给定行中使用的字符范围。 – 2012-07-27 01:31:11

0

我将在记事本中运行一个简单的宏++

+0

好 - 假设这是一个关闭...如果你需要重复未来的文本文件 - 也许更永久 – Randy 2012-07-27 01:03:37

+0

据我所知,这将不得不在未来的文本文件上运行,但格式应该是相同的在将来的文本文件中,以及逗号将始终在每一行中的相同位置。你介意更多关于这个宏的介绍吗? – user1556352 2012-07-27 01:14:21

+0

确定 - 在记事本++中,你可以说'开始记录',然后按照你喜欢的方式在第一行插入逗号,然后说'停止记录' - 从那里你可以为文件的每一行运行'宏' - 它会将所有逗号压缩到最后。 - 然后保存并根据需要使用 – Randy 2012-07-27 11:08:51