2009-11-04 4 views
0

je veux insérer un fichier csv avec caractère spécial comment peut csv fichier à la base de données du serveur SQL avec caractère spécialserveur sql vrac insérer

Répondre

1
+0

procédure alter test_123 comme BULK INSERT ExcelToDB à partir de 'D: \ EtilizedataSaba211009.csv' AVEC (CODEPAGE = 'RAW', FIELDTERMINATOR = '', ROWTERMINATOR = '\ n', ROWS_PER_BATCH = 10000, TABLOCK) GO cette procédure ne fonctionne pas – chaitali

+1

ne fonctionne pas comment? –

-1

SQL Bulk insérer

0

Besi des SQL BULK insert, vous pouvez également consulter les services d'intégration SQL Server, si vous devez le faire une seule fois.

Dans SQL Server Management Studio, accédez à l'Explorateur d'objets, recherchez votre base de données, cliquez dessus avec le bouton droit, puis choisissez "Tâches> Importer des données". Cela fait apparaître l'assistant SSIS, qui vous permet de choisir une source (votre fichier CSV), une cible (votre table de base de données SQL Server +), et il prend en charge certains champs, les renommer et bien plus encore.

Pour les opérations "faites-le une fois", cet assistant est très pratique.

+0

Toutefois, si vous avez des données dans des colonnes pouvant contenir plus de 50 caractères, vous devez ajuster les tailles de colonnes. Je n'ai jamais importé un fichier de cette façon où je n'ai pas eu à le faire pour au moins une colonne. – HLGEM

+0

Hmm .... Je viens d'insérer un grand nombre de feuilles Excel avec des colonnes de 255 caractères de largeur - aucune intervention manuelle n'est nécessaire .... (SSIS 2008) –

0

Si vous programmez en .NET, vous pouvez utiliser CsvHelper et la classe BulkInserter que j'ai écrite. Utilisez CsvHelper pour lire les lignes csv en tant qu'objets CLR et BulkInserter les pompera dans la base de données pour vous. Voici le BulkInserter usage.

0

Vous pouvez soit créer une procédure SQL qui peut être appelée chaque fois que vous voulez l'insérer en bloc, soit vous pouvez le coder en dur.

L'INSERT VRAC hardcoded serait:

BULK 
INSERT *TableName* 
FROM *'FilePath'* 
WITH 
( 
FIELDTERMINATOR = ',', 
ROWTERMINATOR = '\n', 
CODEPAGE = 'ACP' 
) 
GO 

Je l'ai utilisé de nombreuses reprises. Je pense qu'il est préférable de l'utiliser comme une procédure si vous allez l'utiliser beaucoup, mais cela signifie que vous devrez créer la procédure et l'appeler dans chaque requête.

Questions connexes