On 2024-02-28 21:22 +0100, Anthony Apollis wrote:
> Please assist. I am using SSIS to read data from an Excel sheet into
> Postgres. I have increased the column size a few times, just cant seem to
> get the data in. Getting errors relating to destination column size.
What is the data type of that column?
> [Excel Source [24]] Error: System.Exception: SqlTruncateException:
> Numeric arithmetic causes truncation.. RowNumber=1, ColumnName=Metric
> Value [DataType=DT_NUMERIC,Length=0], Data=[Length=12,
> Value=311116655.63]
> at ZappySys.PowerPack.Adapter.SqlDataComponentBase.HandleException(Exception
> ex)
> at ZappySys.PowerPack.Adapter.SqlDataComponentBase.PrimeOutput(Int32
> outputs, Int32[] outputIDs, PipelineBuffer[] buffers)
> at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPrimeOutput(IDTSManagedComponentWrapper100
> wrapper, Int32 outputs, Int32[] outputIDs, IDTSBuffer100[] buffers,
> IntPtr ppBufferWirePacket)
Not sure what I'm looking at, but screenshots 1 and 2 say precision=19
and scale=18 which would be numeric(19,18). But value 311116655.63
shown in the error message requires a precision that is at least 9
digits larger than the scale:
regress=# select '311116655.63'::numeric(19,18);
ERROR: numeric field overflow
DETAIL: A field with precision 19, scale 18 must round to an absolute value less than 10^1.
regress=# select '311116655.63'::numeric(27,18);
numeric
------------------------------
311116655.630000000000000000
(1 row)
--
Erik