Je me connecte à une base de données Oracle et la connexion fonctionne, mais l'erreur suivante s'affiche pour certaines des colonnes:
Description: Column "RESOURCE_NAME" cannot convert between unicode
and non-unicode string data types.
Valeur pour RESOURCE_NAME:
VARCHAR2(200 BYTE)
VARCHAR(200 BYTE)
Je peux me connecter à la base de données Oracle via Oracle SQL Developer sans aucun problème. De plus, j'ai le paramètre de package SSIS Run64BitRuntime = False
.
Le type de données Oracle VARCHAR2
semble être équivalent à NVARCHAR
dans SQL Server ou DT_WSTR
à SSIS. Référence
Vous devrez convertir à l'aide des fonctionstransformation de conversion de données, ou CAST
ou CONVERT
dans SQL Server.
Le moyen le plus simple consiste à ouvrir le package SSIS in notepad (le fichier dtsx) et à rechercher et remplacer globalement toutes les instances de validateExternalMetadata = "True" avec validateExternalMetadata = " Faux" .
remarque: nous avons rencontré ce problème lors de la connexion à une base de données Oracle 11g sous Linux via SSIS.
Si le paquet fonctionne sur une machine et non sur une autre; Essayez de définir NLS_LANG sur la langue, le territoire et le jeu de caractères appropriés et testez le package.
[Command Prompt]> set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
Vous pouvez utiliser la commande SQL dans SSIS et utiliser CONVERT
ou CAST
. Si SSIS vous donne toujours une erreur, c'est à cause des métadonnées. Voici comment vous pouvez le réparer.
sur oledb source -> options de l'éditeur avancées-> colonnes d'entrée/de sortie-> colonnes de sortie-> sélectionnez la colonne RESOURCE_NAME et modifiez le type de données comme DT_WSTR et sa longueur peut également être modifiée à votre guise
Si tout a échoué d'en haut. Créez une variable de table et insérez-y les données. Sélectionnez ensuite tous les enregistrements en tant que source. utilisez SET NOCOUNT ON dans le script.
Vous pouvez simplement double-cliquer sur le bloc "Conversion de données" dans le flux de données et le remplacer par: "Chaîne Unicode [DT_WSTR]"
Travaux