gpt4 book ai didi

sql - 使用 Openrowset 导入错误

转载 作者:行者123 更新时间:2023-12-05 00:23:43 24 4
gpt4 key购买 nike

我正在尝试导入具有数字和字母数字值的列(来自 .csv 文件),但是当我运行 openrowset 过程时,它会正确导入数字行,但对于字母数字值,它默认为 null.

A 表

ID,A,B,C
1,12,hh,i
2,ab12,tt,b
3,2,aa,o
4,bc12,ee,l

使用的代码

SELECT 
*
FROM
OPENROWSET
(
'Microsoft.ACE.OLEDB.12.0','Text;Database=C:\;IMEX=1;','SELECT * FROM abc.csv'
) t

我使用了 IMEX =1 并没有任何变化。

最佳答案

问题原因是 Oledb 提供程序

当导入具有混合数据类型列的 csv 文件或 excel 文件时,它将用 null 替换非主要类型。 (使用 Oledb 或 Ace.Oledb)

解决方法

您可以通过添加包含字符串值的第一行然后在导入完成后将其删除来做一些解决方法

ID,A,B,C
0,a,a,a
1,12,hh,i
2,ab12,tt,b
3,2,aa,o
4,bc12,ee,l

如果使用 IMEX=1

,它将解决问题

这会将列读取为字符串,将 ID 列读取为数字。 (使用0)

或将 HDR=NO 属性添加到连接字符串,以便标题是导入的第一行(其所有值都是字符串)

article 中了解有关混合数据类型的更多信息

其他方法

或者尝试在没有 aceoledb 提供者的情况下实现这一点,只需以其他方式导入 csv 文件,如下所示:

使用 Microsoft 文本驱动程序

SELECT * FROM OPENROWSET('MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=C:\;',
'SELECT * FROM abc.csv')

使用批量插入

CREATE TABLE dbo.MyTable 
(ID INTEGER,
A VARCHAR(50),
B VARCHAR(50),
C VARCHAR(50)
)

BULK INSERT dbo.MyTable
FROM 'C:\abc.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)

这些文章中的其他详细信息:

关于sql - 使用 Openrowset 导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41883658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com