值未插入表-从CSV批量插入到MS-Access

时间:2019-02-28 15:31:11

标签: ms-access bulkinsert

我正在将csv文件中的值批量插入访问表中。到目前为止,一切都很好,直到我遇到此问题为止,在该问题中,访问将所有期望的值插入一个称为BN1的字段。当数据为非数字时,它只会使该列保留空白。这是产品的批次名称,在设计中,字段类型为备忘(旧版.mdb文件,因此无法更改)。

我的样本数据:

DATE,TIME,PN1,BN1,CH0,CH1,CH2

2019-02-18,16:40:05,test,prompt,0,294,0

2019-02-18,16:40:14,test,1,700,294,0

因此,在上述数据中,第一行插入了一个空白值以进行提示,第二行正确插入时,BN1为1。

我插入数据的代码:

INSERT INTO Log_143_temp ([DATE],[TIME],PN1,BN1,CH0,CH1,CH2
) SELECT [DATE],[TIME],PN1,BN1,CH0,CH1,CH2
 FROM [Text;FMT=Delimited;DATABASE=C:\tmp].[SAMPLE_1.csv]

路径和文件名正确,否则不会插入任何值

1 个答案:

答案 0 :(得分:0)

嗨,这是我解决问题的方法,

将查询更改为批量插入到

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

然后在包含要导入的csv文件的文件夹中添加一个名为schema.ini的文件。

schema.ini文件的内容,

[SAMPLE_1.csv]
ColNameHeader=True
Format=CSVDelimited
DateTimeFormat=yyyy-mm-dd
Col1="DATE" Text
Col2="TIME" Text
Col3="PN1" Text
Col4="BN1" Text
Col5="CH0" Double
Col6="CH1" Double
Col7="CH2" Double

现在,csv文件已导入,没有任何问题。

有关schema.ini的其他信息,请访问以下链接,

https://docs.microsoft.com/en-us/sql/odbc/microsoft/schema-ini-file-text-file-driver?view=sql-server-2017