web-dev-qa-db-fra.com

Erreur de conversion des données de chargement en bloc (troncature)

Je reçois cette erreur 

Bulk load data conversion error (truncation) for row 1, column 12 (is_download)

voici le csv ... il n'a qu'une rangée

30,Bill,Worthy,sales,,709888499,[email protected],,"Im a a people person., to work together for this new emerging env.HTTP://applesoftware.com","Bill and Son of Co","Contact Us: Contact Form",0

voici ma déclaration d'insertion en vrac ...

SE SalesLogix
GO

CREATE TABLE CSVTemp
(id INT,
firstname VARCHAR(255),
lastname VARCHAR(255),
department VARCHAR(255),
architecture VARCHAR(255),
phone VARCHAR(255),
email VARCHAR(255),
download VARCHAR(255),
comments VARCHAR(MAX),
company VARCHAR(255),
location VARCHAR(255),
is_download VARCHAR(255)
)
GO

BULK
INSERT CSVTemp
FROM 'c:\leads\leads.csv'
WITH
(
DATAFILETYPE = 'char', 
BATCHSIZE = 50, 
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n' 
)
GO
--Check the content of the table.
SELECT *
FROM CSVTemp
GO

Le problème est que la plupart du temps cela fonctionne très bien, mais dans certaines situations (celle-ci étant l'une d'entre elles), je reçois les erreurs

Toutes les idées sur ce qui cause cette erreur à cet enregistrement

15
Matt Elhotiby

Il s'agit de séparer les virgules dans le champ de commentaires en tant que délimiteurs, car ceux-ci ne sont pas cohérents. La meilleure solution consiste à s'assurer que tous les champs sont entourés de guillemets doubles et que FIELDTERMINATOR est défini sur '","'. Alternativement, remplacez les virgules par quelque chose d'inhabituel dans les commentaires (comme ~) et définissez FIELDTERMINATOR = '~'.

13
Wil

En plus des commentaires de Wil, il semble que les 12 colonnes apparaissent, il se peut donc que votre rowterminator soit incorrect. Tout d’abord, assurez-vous que le programme qui rassemble ces fichiers place bien un retour à la fin de la dernière ligne; J'ai dû corriger de nombreux programmes où ce n'était pas le cas. Une fois que vous êtes sûr qu'il y a un retour chariot, vous devrez peut-être faire des essais pour voir de quel type de retour chariot il s'agit. Parfois, il s'agit uniquement de char (10), parfois de char (13), et parfois, il peut avoir les deux mais être dans le mauvais ordre. Alors expérimentez avec:

ROWTERMINATOR = '\n'
ROWTERMINATOR = '\r'
ROWTERMINATOR = '\n\r'
ROWTERMINATOR = '\r\n'
8
Aaron Bertrand

System.Data.SqlClient.SqlException (0x80131904): Erreur de conversion des données de chargement en bloc (troncature) pour la ligne 97, colonne 33

Pour l'erreur ci-dessus, vous pouvez vérifier

  • La taille du type de données de la colonne (par exemple, VARCHAR (255)) est suffisante pour importer des données ou non.
  • ET le terminateur row par ex.
    • ROWTERMINATOR = '0x0A'
    • ROWTERMINATOR = '\ n'
    • ROWTERMINATOR = '\ r\n'
  • FIELDTERMINATOR
    • Assurez-vous que la terminaison de champ sélectionnée ne se produit pas avec des données. S'il y a une chance, remplacez-le par un autre caractère, par exemple. | dans le fichier.
0
itsrizi