sql-server - SQL Server OPENROWSET Numeric vales 更改为 int
问题描述
我的 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
推荐阅读
- ios - 如何修复 iOS 中的 react-native-date-picker?
- php - 选择包含部分字符串 mysql php 的结果
- javascript - 我需要 javascript/html 帮助来制作文本字段(非)只读
- conditional-statements - 类似于 CLIPS 中的 OR 运算符(基于 CLIPS 规则的编程语言)
- django-models - 如何在主视图和详细视图的类基础视图中使用 2 个模型
- javascript - 关闭登录弹出窗口时Facebook登录得到cors
- mysql - 如何更新符合条件的列
- python - Python Pandas 按多列分组并追加
- swift - Swift:跟踪用户的分数
- reactjs - 根据在 React 中使用钩子选择的复选框过滤对象数组以呈现项目