将数据加载到文件中MySQL(MariaDB)

z6psavjg  于 2022-12-04  发布在  Mysql
关注(0)|答案(1)|浏览(132)

我尝试将.csv文件加载到MariaDB中,但查询时遇到困难。下面是.csv文件的格式:

USER    DATE    TIME    TESTRESULT  ERRORCODE
Esa_Test    16.5.2022   12:36:59    Fail    1(MinMaxError)
Esa_Test    16.5.2022   12:38:02    Fail    1(MinMaxError)
Esa_Test    16.5.2022   12:55:40    Fail    1(MinMaxError)
Esa_Test    17.5.2022   16:15:00    Fail    1(MinMaxError)
DPHYD_Ate   18.5.2022   9:50:11 OK  0(NoError)

使用此查询时:

LOAD DATA LOW_PRIORITY LOCAL INFILE 'C:\\xampp\\mysql\\data\\test\\log2.csv' IGNORE INTO TABLE `test`.`testova2` IGNORE 4 LINES (`USER`, `DATE`, `TIME`, `TESTRESULT`, `ERRORCODE`);

数据加载成功,但带有如下空格:

USER;DATE;TIME;TESTRESULT;ERRORCODE
 E s a _ T e s t ; 1 6 . 5 . 2 0 2 2 ; 1 2 : 3 6 : 5 9 ; F a i l ; 1 ( M i n M a x E r r o r ) 
 E s a _ T e s t ; 1 6 . 5 . 2 0 2 2 ; 1 2 : 3 8 : 0 2 ; F a i l ; 1 ( M i n M a x E r r o r ) 
 E s a _ T e s t ; 1 6 . 5 . 2 0 2 2 ; 1 2 : 5 5 : 4 0 ; F a i l ; 1 ( M i n M a x E r r o r ) 
 E s a _ T e s t ; 1 7 . 5 . 2 0 2 2 ; 1 6 : 1 5 : 0 0 ; F a i l ; 1 ( M i n M a x E r r o r ) 
 D P H Y D _ A t e ; 1 8 . 5 . 2 0 2 2 ; 9 : 5 0 : 1 1 ; O K ; 0 ( N o E r r o r )

我尝试通过字段终止于'\t'行终止于'定义一些“限制”|'在查询中但不工作。原始文件的编码为UTF16LE(根据记事本++)。请帮助我为我的案例构建正确的查询,以便正确插入数据。

6ioyuze2

6ioyuze21#

如果有人在看这个:我设法找到了一个解决方案。问题是编码。解决方案是在MySQL中上传之前,制作一个简短的Python脚本来更改编码。代码是:

import codecs
with codecs.open("input.csv","r",encoding="utf_16") as fin:
    with codecs.open("output.csv","w",encoding="utf_8") as fout:
        fout.write(fin.read())

我自动化了这个,现在一切都正常了。

相关问题