Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 SSIS 2014发行版,货币(不含小数)在平面文件源中_Sql Server_Ssis - Fatal编程技术网

Sql server SSIS 2014发行版,货币(不含小数)在平面文件源中

Sql server SSIS 2014发行版,货币(不含小数)在平面文件源中,sql-server,ssis,Sql Server,Ssis,我正在将数据从平面文件导入Sql server数据库。在平面文件中,数据没有小数,如30.00的3000。我尝试将此列设置为数据刻度为2的DT_Decimal或精度为(12-18)的DT_Numeric和数据刻度2,我还尝试了DT_CY Currency。所有这些都是在数据库中插入值3000.00,而不是30.00。我不知道如何实现这一点 您需要插入小数点。使用暂存表导入原始数据,然后使用类似于以下内容的方法从中选择数据并输入到生产表中 declare @textval varchar(18)

我正在将数据从平面文件导入Sql server数据库。在平面文件中,数据没有小数,如30.00的3000。我尝试将此列设置为数据刻度为2的DT_Decimal或精度为(12-18)的DT_Numeric和数据刻度2,我还尝试了DT_CY Currency。所有这些都是在数据库中插入值3000.00,而不是30.00。我不知道如何实现这一点

您需要插入小数点。使用暂存表导入原始数据,然后使用类似于以下内容的方法从中选择数据并输入到生产表中

declare @textval varchar(18) = '3000'

select CONVERT(Decimal(18,2),Left(@Textval, LEN(@Textval)-2) + '.' + Right(@Textval,2))

我是通过以下步骤完成的:

1) 已创建并打开SSIS项目

2) 添加了一个数据流任务

3) 创建平面文件源

4) 创建了两步变换:

4a) Data Transformation to a dt_decimal

4b) Derived Column with the Expression: decColumn0 / 100

5) Ole DbDestination

它如何知道将3000变为30.00?给它一个精度和比例将不会改变值。我如何从平面文件中插入30分贝的3000?谢谢,我遵循了同样的方法。