将数据类型DECIMAL从CSV导入SQL Server

时间:2014-01-20 22:21:55

标签: sql-server bulkinsert sqldatatypes

将file.csv导入sql server 2008时,我遇到了问题。

在我的file.csv中,小数以这种方式写入:(例如1234,34112)并且似乎SQL服务器不理解','作为十进制。

我的解决方案是使用BULK INSERT作为VARCHAR导入它,然后将其转换为十进制。它有效,但我想这可能是一个更好的解决方案,我无法得到。

你可以帮帮我吗?

提前致谢

2 个答案:

答案 0 :(得分:0)

只有两种方法可以做到这一点你已经提到过在Sql server中导入然后做这样的事情..

CREATE Table ImportTable (Value NVARCHAR(1000))   --<-- Import the data as it is
INSERT INTO @TABLE VALUES
('1234,34112'),('12651635,68466'),('1234574,5874')

  /* Alter table add column of NUMERIC type.
     And update that column something like this... 
   */

UPDATE ImportTable 
SET NewColumn =  CAST(REPLACE(Value , ',', '.') AS NUMERIC(28,8)) 

或者您可以在导入之前将其更改为Excel工作表。

除非您使用SSIS导入数据,否则最好使用丢失数据类型在Sql Server 1st中获取数据,然后根据需要进行任何数据操作。

答案 1 :(得分:0)

SQL Server Management Studio 17 提供了一个新的直接选项来导入平面文件,为您处理十进制 csv 列的导入。右键您的数据库,然后单击任务 > 导入平面文件...

相关问题