Проблема причина является поставщиком OLEDB
При импорте файла CSV или Excel файлов со смешанными типами данных столбца она заменит не являющиеся доминирующие типы по null
. (Использование OLEDB или Ace.Oledb)
Обходные
Вы можете сделать некоторое временное решение, добавив первую строку, которая содержит строковые значения, то удаление его после impirting является закончить
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
Это будет считать столбцы в качестве столбца строки и идентификатора в качестве номера. (0 используется)
Или добавить HDR=NO
свойства строки соединения, так что заголовок является первой линией импортируется (все его значениями являются строками)
Подробнее о смешанных типах данных в этом article
Другого методы
Или попытаться достичь этой цели без aceoledb провайдера просто импортировать файл CSV в другой форме, как следующее:
Использование Microsoft Text Driver
SELECT * FROM OPENROWSET('MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=C:\;',
'SELECT * FROM abc.csv')
Использование BULK INSERT
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'
)
Другие подробности в этих статьях:
Почему бы не принять ответ, если он на 100% правильный? –