2017-08-16 3 views
0

J'ai une feuille de calcul. Il contient des informations sur la société telles que le nom, l'adresse, le téléphone, le courrier électronique, etc. Tout ce que je veux faire est une importation plate dans SQL dans une table qu'il peut créer afin que je puisse y faire un peu de traitement. J'utilise simplement MS SQL Import Wizard. Je n'utilise pas BCP.DTS Import failing

Il obtient tout le chemin jusqu'à la fin et me donne cette erreur:

Blockquote Operation stopped...

  • Initialisation de flux de données Tâche (Succès)

  • Initialiser Connexions (Succès)

  • Définition de la commande SQL (succès)

  • Connexion de la source (Succès)

  • Réglage de connexion de destination (Succès)

  • Validating (Succès) Messages Attention 0x80049304: flux de données Tâche 1: Avertissement: Impossible d'ouvrir la mémoire partagée globale pour communiquer avec la performance DLL; les compteurs de performance de flux de données ne sont pas disponibles. Pour résoudre ce problème, exécutez ce package en tant qu'administrateur ou sur la console du système. (SQL Server Assistant Importation et Exportation)

  • Préparez-vous à exécuter (succès)

  • Pre-execute (Succès)

  • exécution (erreur) Messages erreur 0xc020901c: flux de données Tâche 1 : Il y avait une erreur avec Source - crm_company $ .Outputs [Excel Source Output] .Columns [Directions] sur la source - crm_company $ .Outputs [Excel Source Output]. L'état de la colonne renvoyée était: "Le texte était tronqué ou un ou plusieurs caractères ne correspondaient pas dans la page de codes cible.". (SQL Server Assistant Importation et Exportation)

Erreur 0xc020902a: flux de données Tâche 1: La "Source - crm_company $ .Outputs [Excel Source sortie] [.Columns Directions]" a échoué parce que la troncature a eu lieu, et disposition de troncature sur "Source - crm_company $ .Outputs [Sortie de la source Excel] .Columns [Directions]" spécifie l'échec de la troncature. Une erreur de troncature s'est produite sur l'objet spécifié du composant spécifié. (Importation SQL Server et Assistant Exportation)

  • Copie à [dbo] [crm_company] (Stopped) Messages d'erreur 0xc0047038. Flux de données Tâche 1: SSIS Code d'erreur DTS_E_PRIMEOUTPUTFAILED. La méthode PrimeOutput sur Source - crm_company $ a renvoyé le code d'erreur 0xC020902A. Le composant a renvoyé un code d'échec lorsque le moteur de pipeline appelé PrimeOutput(). La signification du code d'échec est définie par le composant, mais l'erreur est fatale et le pipeline a cessé d'être exécuté. Il peut y avoir des messages d'erreur affichés avant cela avec plus d'informations sur l'échec. (SQL Server Assistant Importation et Exportation)

  • post-exécution (Succès) Messages Informations 0x4004300b: flux de données Tâche 1: "Destination - crm_company" a écrit 469 lignes. (Importation SQL Server et Assistant Exportation)

Blockquote

Tout d'abord, j'ai dit DTS d'ignorer les erreurs de troncature. Les champs sources sont int ou nvarchar. Je modifie les mappages et les force à être int au lieu de float pour les colonnes requises. J'ai défini la taille de la colonne par défaut à 510 à partir de 255. Pour 2 colonnes, Directions et Notes, il a été décidé que Directions est nvarchar et que Notes est nvarchar (max). Je redéfinir les directions un afin qu'il soit traité comme nvarchar (max) et je peux voir que dans la table il crée après qu'il s'exécute. Cependant, quand il s'exécute il échoue CHAQUE FOIS avec l'erreur ci-dessus.

Je veux juste que ces données dans une table. C'est tout. Si je spécifie une table manuellement en premier et que j'importe, cela reste quand même des erreurs. Le texte le plus long dans Directions est de 978 caractères, il n'est donc pas énorme. Je m'en fous si ça tronque, je ne veux pas que ça s'arrête quand ça sent le besoin. Il y a 16 000 lignes importées et seulement 470 importées avant l'échec. Je ne sais pas quelle ligne échoue dans le fichier source car, étrangement, DTS ne tire pas les données dans la feuille de calcul, dans l'ordre dans lequel elles se trouvent. Allez comprendre. J'ai essayé de contourner les attaques stupides de DTS pour décider quels sont les formats de colonne en collant 20 lignes de données de texte, mais cela échoue toujours.

+0

Est-il possible que l'une des valeurs de l'une des colonnes contienne le délimiteur de colonne? Ou le délimiteur de ligne? –

+0

Ce n'est pas une importation CSV. C'est un fichier xlsx donc il n'y a pas de délimiteur. L'aperçu est bien et montre tout dans la bonne colonne. Si vous lui dites d'ignorer globalement la troncature et que j'importe une colonne contenant des données d'une longueur ne dépassant pas 1000 caractères dans un champ nvarchar (max), cela ne devrait poser aucun problème et aucune troncature ne devrait se produire. S'il trouve quelque chose à tronquer, il doit l'ignorer car c'est ainsi que je l'ai configuré, mais il ignore mes paramètres. – snert

Répondre

0

Suggestions:

Si vous avez Visual Studio BI puis développer un pack SSIS et:

1.) Essayez d'ajouter une branche pour les lignes ayant échoué à rediriger ceux-ci. Vous pouvez le faire en ajoutant un itinéraire avec la ligne rouge de la source Excel. Après avoir exécuté le paquet, vous pouvez faire une analyse sur les lignes réussies et échouées. 2.) Il est important de savoir quel type de connexion utilisez-vous pour SQL Server? J'ai beaucoup de problèmes avec le client SQL natif, donc je préfère utiliser les types de connexion ADO.NET ou OLE DB.

Avec l'Assistant:

3.) Essayez d'utiliser la conversion de type

4.) Enregistrez le fichier TXT, puis faire l'ETL.

+0

J'ai SQL Server Management Studio et je fais un clic droit sur la base de données, choisissez des tâches -> Importer des données. Ceci est une importation unique afin que je puisse obtenir des données dans des tables de transfert pour un traitement ultérieur. Je n'ai pas Visual Studio BI. La connexion que j'ai créée via l'assistant d'importation est une connexion source Excel et une connexion SQL Server Native Client sur la destination. Je n'ai aucune idée de ce qu'est ETL. – snert

+0

ETL signifie Extract, Transform and Load. Les applications font des transferts de données entre les environnements varioo sont appelés outils ETL et même l'activité de copie est mentionnée comme "ETL les données".SQL Server devrait venir avec Visual Studio pour Business Intelligence (vous pouvez ajouter plus tard si le matériel d'installation est disponible) et c'est un outil très puissant pour le transfert et le traitement des données. Quand il y a un problème avec l'importation de données, je pense que c'est une bonne approche pour utiliser l'application de données d'importation/exportation du serveur SQL, enregistrer le paquet et il peut être utilisé à des fins de débogage/développement. J'espère que cela t'aides. –

0

J'ai essayé beaucoup de choses pour contourner cela et trouvé qu'il est encore plus facile d'importer la feuille de calcul dans Access, puis d'importer Access to SQL. Le travail est fait en 5 minutes.