SQLTeam.com | Weblogs | Forums

Import Oracle to SQL SERVER


#1

Hello
I import a table from ORACLE to SQL SERVER

In my source table there is a decimal field that has a datum:

1
0.2526262445666666444555

This field does not pass

On the other hand it passes without problem from ORACLE to ACCESS

I am obliged to pass by ACCESS

ORACLE -> ACCESS -> SQL SERVER

How and what type of field to do during the mapping


#2

the error message is:

The data will be truncated ....


#3

what is the datatype in Oracle and what datatype are you using in SQL Server?


#4

Table Oracle : Field, Type Number
Table S SERVER : Field, Type Decimal

Tanks


#5

In SQL Server (presumably Oracle too) DECIMAL has a Precision and Scale, these will need to be made the same (or more generous) than the Source Oracle column

Default Precision is 18, maximum is 38
Default Scale is 0 (maximum is up to value of Precision)


#6

I put scale 0 or 38 in SQL?


#7

"I put scale 0 or 38 in SQL?"


#8

I will try and keep you informed

thanks Kristen


#9

Hello

I'm trying to import an Oracle table on sqlserver (real database at my client)

On oracle, I have a field of type Numeric precision 38 scale 0 which includes a data as follows:

Col1 = 0.54879878958547123654
(20 characters after the decimal point)

I can not find the corresponding type in sql
This field blocks the import and displays the following message:

Erreur 0xc020901c: Tâche de flux de données 1: Une erreur s'est produite avec colonne de sortie « BI_DURATION_FACTOR » (302) sur sortie « Sortie de source OLE DB » (11). État de colonne retourné : « Le texte est tronqué ou un ou plusieurs caractères n'ont aucune correspondance dans la page de codes cible. ».
(Assistant Importation et Exportation SQL Server)

Erreur 0xc020902a: Tâche de flux de données 1: Échec de l'objet « colonne de sortie « BI_DURATION_FACTOR » (302) » en raison d'une troncation. En outre, la disposition de la ligne de troncation sur « colonne de sortie « BI_DURATION_FACTOR » (302) » indique une erreur au niveau de la troncation. Une erreur de troncation s'est produite sur l'objet spécifié du composant spécifié.
(Assistant Importation et Exportation SQL Server)

Erreur 0xc0047038: Tâche de flux de données 1: Code d'erreur SSIS DTS_E_PRIMEOUTPUTFAILED. La méthode PrimeOutput sur composant « Source - BILLING » (1) a retourné le code d'erreur 0xC020902A. Le composant a retourné un code d'erreur lorsque le moteur du pipeline a appelé PrimeOutput(). La signification du code d'erreur est définie par le composant. Cependant, l'erreur est irrécupérable et le pipeline ne s'exécute plus. Des messages d'erreur peuvent être envoyés au préalable avec des informations indiquant la raison de l'échec.
(Assistant Importation et Exportation SQL Server)

what should I do?

thanks


#10

Hello

I'm trying to import an Oracle table on sqlserver (real database at my client)

On oracle, I have a field of type Numeric precision 38 scale 0 which includes a data as follows:

Col1 = 0.54879878958547123654
(20 characters after the decimal point)

I can not find the corresponding type in sql
This field blocks the import and displays the following message:

Erreur 0xc020901c: Tâche de flux de données 1: Une erreur s'est produite avec colonne de sortie « BI_DURATION_FACTOR » (302) sur sortie « Sortie de source OLE DB » (11). État de colonne retourné : « Le texte est tronqué ou un ou plusieurs caractères n'ont aucune correspondance dans la page de codes cible. ».
(Assistant Importation et Exportation SQL Server)

Erreur 0xc020902a: Tâche de flux de données 1: Échec de l'objet « colonne de sortie « BI_DURATION_FACTOR » (302) » en raison d'une troncation. En outre, la disposition de la ligne de troncation sur « colonne de sortie « BI_DURATION_FACTOR » (302) » indique une erreur au niveau de la troncation. Une erreur de troncation s'est produite sur l'objet spécifié du composant spécifié.
(Assistant Importation et Exportation SQL Server)

Erreur 0xc0047038: Tâche de flux de données 1: Code d'erreur SSIS DTS_E_PRIMEOUTPUTFAILED. La méthode PrimeOutput sur composant « Source - BILLING » (1) a retourné le code d'erreur 0xC020902A. Le composant a retourné un code d'erreur lorsque le moteur du pipeline a appelé PrimeOutput(). La signification du code d'erreur est définie par le composant. Cependant, l'erreur est irrécupérable et le pipeline ne s'exécute plus. Des messages d'erreur peuvent être envoyés au préalable avec des informations indiquant la raison de l'échec.
(Assistant Importation et Exportation SQL Server)

what should I do?

thanks


#11

Scale 0 will only store a whole number, with no decimal part.

NUMERIC(38, 20)

will hold that number to 20 decimal places, but not sure if that is the correct answer to your question!


#12

I tried with NUMERIC (38, 20) but it is still the same error message


#13

You sure that the error message relates to that NUMERIC column? rather than to the truncation of, say, a text column?


#14

Yes I am sure this is this numeric column


#15

Maybe there is a different row with a very large number? Max value that NUMERIC(38, 20) can hold is

999,999,999,999,999,999

You will also get an error if there are too many decimal places.

Perhaps in Oracle try:

SELECT COUNT(*)
FROM YourTable
WHERE YourColumn > 999999999999999999.0

I guess you would also need to try to find a way of finding any values with more decimal places. If the MAX(YourColumn) value is a lot smaller you could change the NUMERIC(38, 20) to something with more decimal places that allows enough difference between precision and scale for your largest value