2009-04-16 1 views
0

J'ai besoin d'importer des données d'Excel dans un SQL 2000 db.Comment puis-je importer des données vers SQL à partir de CSV ou XLS en incrémentant automatiquement un champ de chaîne en fonction des enregistrements en cours dans DB?

Je dois importer 6 champs de la feuille de calcul et incrémenter un champ de chaîne contenant un nombre entier complété à 5 caractères avec des zéros en tête. Ce champ n'est pas la clé primaire et la base de données ne le remplit pas automatiquement. Le DB autorisera également la saisie de ce champ en tant que NULL si cela aide, puis changez ensuite si cela vous aide. Je peux obtenir les données dans la table dont j'ai besoin en utilisant une combinaison de DTS recrue et insérer des déclarations et mettre à jour manuellement le champ chaîne pour les 20 enregistrements que je dois faire aujourd'hui, mais la semaine prochaine je dois importer environ 1000 enregistrements. Dois-je écrire une application C#/ADO.net pour ce faire, [en gardant à l'esprit que je suis un novice, alors cela me prendra quelques jours :-)] ou est-ce que je peux incrémenter un champ de chaîne utilisant DTS directement ou une sorte de boucle dans une instruction d'insertion?

Merci à l'avance G

EDIT: Le tableau que je suis insérer dans est construit comme ci-dessous et je dois mettre à jour "cedeviceid", "vanwarehouse", "nom d'utilisateur", "devicesimnumber", " UserGroup "et" ServiceMgr ". de la feuille Excel. "sendercode" est la chaîne dont j'ai besoin pour incrémenter

CREATE TABLE [dbo].[Mw_gsmprofile] (
[cedeviceid] varchar NOT NULL,
[mainwarehouse] NULL varchar,
[vanwarehouse] NULL varchar,
[nom d'utilisateur] NULL varchar,
[sendercode] NULL varchar,
[devicesimnumber] NULL varchar,
[usersupportgsm] [int] NULL,
[userisonline] [int] NULL,
[onlinedate] NULL varchar,
[lastsentsequenceno] [int] NULL,
[lastsentda te] NULL varchar,
[lastreceivedsequenceno] [int] NULL,
[lastreceiveddate] NULL varchar,
[EnableAutoDownloading] [int] NULL,
[EnableCompressFile] [int] NULL,
[LogonUserName] varchar NULL ,
[LogonPassword] NULL varchar,
[LogonDomain] NULL varchar,
[UserGroup] NULL varchar,
[UseStorageCard] [int] NULL,
[SMSMapProfile] NULL varchar,
[SMPPClientFlag] [int] NULL,
[lastupdate] NULL varchar,
[ServiceMgr] NULL varchar,
[VanLocation] NULL varchar,
[OnHireWarehouse] NULL varchar,
[OnHireWhsRepType] [int] NULL ,
[HireDepotWarehouse] NULL varchar,
[HireDepotWhsRepType] [int] NULL,
CONTRAINTE [PK_mw_gsmprofile] PRIMARY KEY CLUSTERED
(
[cedeviceid] ASC
) avec (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

DONNÉES ÉCHANTILLON

cedeviceid, vanwarehouse , nom d'utilisateur, devicesimnumber, UserGroup, ServiceMgr
3431, 999, INSTALLER EQUIPE 1,, INSTAL, Ahoa
3441, 999, INSTALLER EQUIPE 2,, INSTAL, Ahoa
3451, 999, INSTALLER EQUIPE 3,, INSTAL, Ahoa
3461, 999, INSTALL TEAM 4,, INST AL, Ahoa
3471, 999, INSTALLER TEAM 5,, instal, Ahoa
3472, 999, 6 INSTALLER EQUIPE,, instal, Ahoa

Répondre

1

je referais ce avec une petite application. Vous devez obtenir le premier élément de la table, trié dans l'ordre inverse (cela vous donnera la valeur maximale de l'ID). Après avoir connu la valeur maximale, vous pouvez l'incrémenter très facilement avec l'expressivité d'un langage de programmation.

0
  1. Obtenez la valeur de départ de la base de données
  2. itérer sur les enregistrements importés, en les insérant un à la fois dans la DB.Utilisez une variable de compteur pour incrémenter le champ. Utilisez la surcharge tostring ("00000") pour remplir le numéro.
2

Certains slifght propre trompette soufflant ici, mais mon propre outil FOSS CSVfix peut le faire sans écrire de code, en utilisant le (inexplicablement) uundocmented séquence commanbd. Par exemple, étant donné un fichier CSV:

foo,bar 
one,two 
three,four 

alors:

csvfix sequence -n 42 -p 5 afile.csv 

produirait la sortie:

00042, foo, bar 
00043, one, two 
00044, three,four 

l'option -p spécifie le remplissage et l'option -n départ nombre.

Maintenant, pour savoir comment il a été omis dans le fichier d'aide ....

+0

Nice app! Merci. La commande SQL_INSERT semble particulièrement intéressante. g –

Questions connexes