2010-11-02 34 views
0

Quel est le moyen le plus simple - de préférence en utilisant SQL Server Management Studio - d'insérer du texte dans une colonne de type Text (text, ntext, varchar(max), nvarchar(max)) à partir d'un fichier.Insérer du texte dans la colonne TEXT à partir d'un fichier

Dites une ont une table

textFileContent(id, textData) 

et que vous voulez faire

insert into textFileContent(textData) 
values([data read from a file, complete file content]) 

Aussi, est-il possible de faire la mise à jour de la même manière? Par exemple.

update textFileContent 
set textData = [data read from a file, complete file content] 
where id = 1 
+1

utilisez plutôt SSIS/DTS? – brumScouse

+1

TEXT, NTEXT, IMAGE sont ** obsolètes ** à partir de SQL Server 2005 - vous devriez éviter de les utiliser si possible (surtout si vous créez quelque chose de nouveau). –

Répondre

0

La réponse dépend un peu de votre cas d'utilisation. Je suppose que vous avez besoin de charger des données au début d'un projet ... si vous avez besoin de "nourrir" les données sur le serveur SQL, j'aurais une réponse différente.

Voici les choix les plus simples:

  • reformater votre fichier texte il est une instruction SQL. Par exemple, si vous avez une ligne de texte que vous voulez insérer dans une table appelée noms, vous pouvez mettre insert into names value(' au début de chaque ligne et ') à la fin. Puis copiez et passez cela dans le gestionnaire et exécutez-le.

  • bulk insert (link)

  • utilisation SSIS/DTS (link)

+0

remercie Hogan, donc en supposant que j'ai le fichier sur le serveur, disons c: \ testFile.txt pour télécharger le contenu complet sur une seule ligne, est-ce que je fais: "bulk insert txtFileContent from 'c: \ r781.txt'"? – padn

+0

Dans ce cas, je voudrais simplement modifier le fichier et l'exécuter dans le gestionnaire - Je dois toujours utiliser des essais et erreurs pour obtenir l'insertion en vrac au travail. Fais ça. Faites d'abord une copie de votre table et testez-la jusqu'à ce qu'elle fonctionne avant d'aller chercher l'or. – Hogan

+0

J'ai eu beaucoup de succès avec SSIS et XML sur de très gros fichiers qui ont plusieurs champs. –

0

Vous pouvez importer des données à partir d'un fichier texte en utilisant OPENROWSET. Mais, pour cela, vous devrez peut-être définir un fichier de format. Vous pouvez trouver plus d'aide here

1

Vous pouvez utiliser xp_cmdshell:

create table #mytable 
(
    id int IDENTITY(1,1) NOT NULL, 
    result nvarchar(MAX) NULL 
) 

insert into #mytable (result) 
exec xp_cmdshell 'type c:\somefile.txt' -- this may require cmd before it 

Cela devrait vider le texte à la table, où des retours représentent de nouveaux records. Sinon, si vous avez SQL Express, vous êtes limité à BCP et BULK INSERT. Il y a des commandes dans BCP si vous créez d'abord votre table pour générer votre fichier de format. Rappelez-vous si c'est Unicode que vos délimiteurs sont deux caractères \n\0\r\0 (ou quelque chose comme ça)

Sinon, vous pouvez utiliser SSIS si vous avez SQL Standard ou supérieur. Vous créez un flux de données, déposez une icône pour le fichier texte d'entrée, déposez une icône pour la table de destination et cliquez sur Lecture. Pour que cela fonctionne avec SQL, vous devrez l'appeler avec quelque chose comme xp_cmdshell ci-dessus. SSIS est le visuel de ce que vous feriez avec BCP en ce qui concerne les fichiers texte.