SQL 服务器 OPENROWSET 数值值更改为 int

SQL Server OPENROWSET Numeric vales changes as int

我的 SQL Server 2008 R2 OPENROWSET 读取 csv 文件时遇到问题。

它在从 csv 文件读取时自动将数值转换为 int。

我有一个包含 30 行 ColumnA 列的 csv 文件。

这是我的代码

declare @SysFilepath as varchar(max)
set @SysFilepath='C:\Users\rtdev1\Desktop\'
declare @SysFilename as varchar(max)
set @SysFilename='Test.csv' 

 declare @str as varchar(max)=''                                                         
 set @str='SELECT *  FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'',  
 ''Text;Database='+@SysFilepath+';HDR=yes'',''select * from ['+@SysFilename+']'')'
 exec(@str)

任何我的结果如下。

5.654 值更改为 5,0.25475 值更改为 0。

如果列的 int 值超过 25 行,列数据类型会自动更改。

谁能帮忙解决一下

谢谢。

现在将代码更改为批量插入后,我可以获得正确的结果。

create table #CSVLine
(
  ColumnA   VARCHAR(MAX)
)

declare @Sql as varchar(max)
declare @InputFile as varchar(max)
set @InputFile = 'E:\MyPath\MyFile.csv'
declare @FirstLine int
set @FirstLine =1

SET @Sql = 'BULK INSERT #CSVLine
 FROM ''' + @InputFile + '''
 WITH
 (
    FIRSTROW=' + CAST(@FirstLine as varchar) + ',
    FIELDTERMINATOR = '','',
    ROWTERMINATOR = ''\n''
 )

 select * from #CSVLine'

 EXEC(@sql)

感谢@Jeroen Mostert