2009-10-26 6 views
1

J'ai une table de recherche avec environ 10 enregistrements, je sais que je peux écrire la structure dans un fichier texte, mais comment puis-je scripter les données à insérer dans les commandes?Comment script ma table pour générer des commandes INSERT INTO?

+2

Quel SGBD utilisez-vous? –

+1

quelques exemples de données et une description détaillée de ce qui devrait arriver à ces données vous obtiendrez une réponse utile. – dnagirl

+0

duplication possible de [Exportation de données dans SQL Server comme INSERT INTO] (http://stackoverflow.com/questions/1515969/exporting-data-in-sql-server-as-insert-into) – Flexo

Répondre

2

En supposant SQL Server ...

SQL Management Studio va générer un script d'insertion. Cliquez droit sur votre base de données et sélectionnez les données Tâches-export

+0

Notez que ceci est supporté à partir de la version 2008 – Madhivanan

2

Cela dépend à peu près sur les outils que vous utilisez ...

2

La façon rapide et sale est d'exécuter select dans une chaîne et dire gestionnaire sql entreprise pour vous donner du texte (non grille) que la sortie

'INSERT dans des tables (champs ici) Valeurs (' SELECT + field1 + '' ....

5

Dix dossiers, et il est urgent?

il suffit de taper manuellement. devrait être assez facile à couper-n-coller

2

quelque chose comme ça:

select "insert into my_targ_table(my_field_1, my_field_2, ..., my_field_n) values(" || x.my_field_1_col || ", " || x.my_field_2_col || ");" 
from my_source_table x 

Puis lancez simplement le script que vous avez généré.

+0

J'ai eu la même idée, seulement 28 secondes plus tard. – recursive

1

Ce code fonctionne avec toutes les tables

DECLARE @TblName varchar(128) 
DECLARE @WhereClause varchar(255) 
DECLARE @cmd1 varchar(7000) 
DECLARE @cmd2 varchar(7000) 

SET @TblName = '<tablename>' --Name of your table 
SET @WhereClause = ' ' --where clause ex columnA = 1 
SET @cmd1 = 'SELECT '' INSERT INTO ' + @TblName + ' (' 
SET @cmd2 = ' + '' VALUES ('' + ' 

create table #tableDef (id int identity (1,1), ColType int, ColName varchar(128)) 

--Fetch column names and datatypes 
insert #tableDef (ColType, ColName) 
select case when DATA_TYPE like '%char%' then 1 
      when DATA_TYPE like '%datetime%' then 2 
      else 0 end , 
    COLUMN_NAME 
from information_schema.columns 
where TABLE_NAME = @TblName 
order by ORDINAL_POSITION 

SELECT @cmd1 = @cmd1 + ColName + ',', 
     @cmd2 = @cmd2 
       + ' CASE WHEN ' + ColName + ' IS NULL ' 
       + ' THEN ''NULL'' ' 
       + ' ELSE ' 
       +  case ColType 
         when 1 then ''''''''' + ' + ColName + ' + ''''''''' 
         when 2 then ''''''''' + ' + 'CONVERT(VARCHAR(20),' + ColName + ')' + ' + '''''''''      
         else 'CONVERT(VARCHAR(20),' + ColName + ')' end 
       + ' END + '','' + ' 
     from #tableDef 
order by id 

select @cmd1 = left(@cmd1,len(@cmd1)-1) + ') '' ' 
select @cmd2 = left(@cmd2,len(@cmd2)-8) + '+'')'' FROM ' + @tblName + @WhereClause 

select '/*' + @cmd1 + @cmd2 + '*/' 
exec (@cmd1 + @cmd2) 

drop table #tableDef 
Questions connexes