Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server OPENROWSET数值值更改为int_Sql Server_Sql Server 2008_Sql Server 2008 R2_Openrowset - Fatal编程技术网

Sql server SQL Server OPENROWSET数值值更改为int

Sql server SQL Server OPENROWSET数值值更改为int,sql-server,sql-server-2008,sql-server-2008-r2,openrowset,Sql Server,Sql Server 2008,Sql Server 2008 R2,Openrowset,我的SQL Server 2008 R2 OPENROWSET在读取csv文件时出现问题 从csv文件读取时,它会自动将数值转换为int 我有一个csv文件,列ColumnA有30行 这是我的密码 declare @SysFilepath as varchar(max) set @SysFilepath='C:\Users\rtdev1\Desktop\' declare @SysFilename as varchar(max) set @SysFilename='Test.csv' d

我的SQL Server 2008 R2 OPENROWSET在读取csv文件时出现问题

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

我有一个csv文件,列ColumnA有30行

这是我的密码

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

如果添加
,情况会发生变化吗;IMEX=1
hdr=yes
之后?需要明确的是,这是Excel提供程序如何猜测数据类型的问题
OPENROWSET
是一个无辜的受害者,只需要处理它得到的东西。@Jeroenmoster在添加
后表示抱歉;IMEX=1
仍然相同。是否有任何其他解决方案可以读取整个csv。是。不过,您可能需要用一个格式文件来进一步修改。