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
我的 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