0

在我的一个应用程序中,我使用以下批量插入查询将 csv 数据导入 mt Access db。

INSERT INTO Log_134_temp ([DATE],[TIME],CH0,CH1,CH2,CH3) SELECT [DATE],[TIME],CH0,CH1,CH2,CH3 FROM [Text;FMT=CSVDelimited;HDR=Yes;DATABASE=C:\tmp].[SAMPLE_1.csv]

查询被执行并且查询中的所有参数都是正确的。问题在于只有一个 csv 文件在执行查询后会出现以下错误。

字段“Log_134_temp.date”不能包含 Null 值,因为该字段的必需属性设置为 True。在此字段中输入一个值。

在没有任何问题的情况下导入其他 csv 文件。

成功导入的文件和有问题的文件看起来与它们的格式相同。这让我困惑了一天多。

导入的文件

https://www.dropbox.com/s/amddhzhi6nr24ex/SAMPLE_1_111.csv?dl=0

未导入的文件

https://www.dropbox.com/s/2rrgdf7oor5ptbf/SAMPLE_1_112.csv?dl=0

4

1 回答 1

0

第 135169 行中的坏行:

                                    2019-02-14,16:57:54,310,837,300,650

它包含很多00符号。

我在简单的 Python 循环的帮助下找到了这个:

In [43]: f = read_file(r'...SAMPLE_1_112.csv')
In [44]: li = f.split('\n')
...
In [60]: prev_len = 1
In [61]: for l in li:
    ...:     if not len(l): continue
    ...:     if prev_len != len(l): print(l)
    ...:     prev_len = len(l)
    ...:
DATE,TIME,CH0,CH1,CH2,CH3
2018-10-03,11:45:44,246,621,250,600
                                    2019-02-14,16:57:54,310,837,300,650
2019-02-14,16:59:01,309,859,300,650

于 2019-05-21T18:30:50.957 回答