Je crée un package dans lequel j'exporterai les données d'une base de données dans un fichier Excel vide. Lorsque j'ai ajouté uniquement les composants source et de destination et que j'ai exécuté le package, j'ai eu une erreur de conversion indiquant que la colonne de sortie et la colonne «A» ne peuvent pas convertir entre les types de données de chaîne unicode et non unicode.
Pour résoudre ce problème, j'ai ajouté un composant de conversion de données et converti toutes les colonnes en
"Chaîne Unicode [DT_WSTR]"
et je n'ai plus reçu l'erreur. Le seul problème est que j'avais environ 50 colonnes où je devais aller 1 par 1 et sélectionner "Chaîne Unicode [DT_WSTR]" dans la liste déroulante. J'ai ensuite dû aller dans le composant de destination et mapper les colonnes nouvellement converties à mon fichier Excel.
Ma question est la suivante: si quelqu'un d'autre est tombé sur ce problème, existe-t-il un meilleur moyen plus efficace de contourner la nécessité de faire toutes les conversions manuelles de types de données? Devoir convertir et mapper toutes les colonnes une par une ne semble pas pratique, surtout si vous avez un grand nombre de lignes.
Je comprends que les fichiers Excel ne sont pas la meilleure solution pour importer et exporter des données, mais c'est ce qui est requis dans ce cas particulier.
Je pourrais chercher un moyen d'exporter simplement vers un fichier texte plat, puis d'essayer de convertir en Excel comme dernière étape du package. J'espère que cela ne déclenchera pas la même erreur de conversion unicode / nonunicode.
la source
Réponses:
Comme alternative à RDC, je sauterais simplement la conversion des types de données dans SSIS et les jetterais explicitement comme nvarchar dans ma requête source.
Usage
Dans votre requête source (et vous êtes utilisez une requête source et ne pas sélectionner simplement la table dans le bas de baisse), les choses explicitement jeté à une longueur char n approprié (var).
Au lieu de
utiliser une requête telle que
Les étudiants astucieux d'AdventureWorks reconnaîtront que les données étaient déjà un
n(var)char
type mais c'était simplement pour démontrer le concept.Avantages
Data Conversion Component
de SSISla source
CONVERT
devrait être plus facile à coller 50 fois queCAST
, puisque les arguments sont devantNativement, il n'y a aucun moyen de le faire. Mais vous pouvez télécharger - Remplacer le composant de conversion de données pour SSIS de Codeplex et le faire en une seule fois.
Plus d'informations peuvent être trouvées ici .
la source
Si vous devez uniquement passer de "Chaîne Unicode (DT_WSTR)" à "Chaîne (DT_STR)" ou vice versa, vous pouvez le faire:
Rechercher la chaîne
DTS:DataType
si elle est suivie de = "130", la colonne est alors définie comme DT_WSTR (unicode).Si elle est suivie de = "129", alors la colonne est définie comme DT_STR (non-unicode), utilisez la recherche et remplacez avec soin (vous avez fait une copie avant, n'est-ce pas?)
Enregistrez le fichier et c'était peut-être tout.
la source