2010-07-02 6 views
3

J'ai des fichiers txt qui contiennent des tables avec un mélange de différents enregistrements qui ont différents types de valeurs et de définitions pour les colonnes. Je pensais l'importer dans une table et exécuter une requête pour séparer les différents types d'enregistrements, car un identifiant à ceci est listé dans la première colonne. Existe-t-il un moyen de modifier le type de valeur d'une colonne dans une requête? car il sera difficile de les traiter tous comme du texte. Si vous avez d'autres suggestions sur la façon de résoudre cela, faites-le moi savoir.Sélection à partir d'une table et insertion dans une colonne d'un autre type en utilisant la requête dans l'accès ms

Voici un exemple des tables pour 2 types d'enregistrements fournis par le site où je suis les données de

create table dbo.PUBACC_A2 
(
     Record_Type    char(2)    null, 
     unique_system_identifier numeric(9,0)   not null, 
     ULS_File_Number   char(14)    null, 
     EBF_Number    varchar(30)   null, 
     spectrum_manager_leasing char(1)    null, 
     defacto_transfer_leasing char(1)    null, 
     new_spectrum_leasing  char(1)    null, 
     spectrum_subleasing  char(1)    null, 
     xfer_control_lessee  char(1)    null, 
     revision_spectrum_lease char(1)    null, 
     assignment_spectrum_lease char(1)    null, 
     pfr_status  char(1)   null 

) 

go 
create table dbo.PUBACC_AC 
(
     record_type    char(2)    null, 
     unique_system_identifier numeric(9,0)   not null, 
     uls_file_number   char(14)    null, 
     ebf_number    varchar(30)   null, 
     call_sign     char(10)    null, 
     aircraft_count   int     null, 
     type_of_carrier   char(1)    null, 
     portable_indicator  char(1)    null, 
     fleet_indicator   char(1)    null, 
     n_number     char(10)    null 
) 
+0

Je ne serai peut-être pas en mesure de faire ça avant la fin de semaine, alors il me faudra peut-être un peu de temps avant d'accepter une réponse. – user381261

Répondre

1

Oui, vous pouvez faire ce que vous voulez. Dans l'accès ms, vous pouvez utiliser toutes les fonctions VBA et avec certains

IIF(FirstColumn="value1", CDate(SecondColumn), NULL) as DateValue, 
IIF(FirstColumn="value2", CDec(SecondColumn), NULL) as DecimalValue, 
IIF(FirstColumn="value3", CStr(SecondColumn), NULL) as StringValue 

Vous pouvez utiliser tout ou partie de ce qui précède dans votre SELECT.

EDIT:

De vos commentaires, il semble que vous voulez les diviser en différentes tables - l'importation sous forme de texte ne devrait pas être un problème dans ce cas. Après l'importation et l'obtenir dans le tableau initial, créez le tableau approprié manuellement le paramètre INSERT dans la table appropriée. B) Vous pouvez même faire un make table query, mais il pourrait être plus rapide de le créer manuellement. Si vous faites une requête make table vous devez être sûr que vous avez casté les données dans le bon type dans votre select.

EDIT2: Comme vous mis à jour la question montrant la structure, il devient évident que ma suggestion ci-dessus ne va pas aider directement.

S'il s'agit d'un processus unique, vous pouvez suivre la solution de HLGEM. Voici quelques détails supplémentaires.

1) Importation dans une table avec deux colonnes - RecordType char (2), note de service Rest

2) Maintenant, vous pouvez diviser les données (faire deux requêtes sélectionner en fonction RecordType) et réexporter les données (pour être en mesure d'utiliser l'accès assistant d'importation)

3) maintenant, vous avez deux fichiers texte avec une structure appropriée qui peut être facilement importé

+0

Je ne suis pas sûr de ce que vous voulez dire par là. Je suis allé essentiellement sur le site Web et téléchargé quelques entrées d'intérêt. le problème est qu'il a pris les données de toutes les tables et les a jetées dans un fichier pour chaque requête que j'ai courue du site Web. Donc ce que je dois faire est d'exécuter une requête qui 1) peut séparer les types d'enregistrement et/ou 2) correspondre à 2 des types d'enregistrement dans une seule table puisque j'ai besoin de données de plus d'un type d'enregistrement et je dois correspondre à 2 par l'unique_system_identifier car ils ne sont pas dans le même ordre. – user381261

0

Si vous avez une colonne définie sous forme de texte, car il a des alphas et des chiffres, vous » Je serai seulement capable de l'interroger comme s'il s'agissait de texte. Une fois que vous avez séparé les différents "types" de données dans leurs propres tables, vous devriez pouvoir modifier la définition du schéma. S'il vous plaît commentez ici si je ne comprends pas ce que vous essayez de faire.

+0

C'est ce que j'essaie de faire, mais pas ce que je demande. Ce que je veux savoir, c'est si je peux faire la séparation avec le changement d'une requête ou par une autre méthode qui est plus facile que de la main car il y a beaucoup de types de données et d'enregistrements à trier. – user381261

+2

Pouvez-vous mettre dans un échantillon de quelques types d'enregistrements différents afin que je puisse avoir une meilleure idée de ce à quoi ressemblent vos données et de ce que vous essayez de faire? – Nate

1

Je l'ai fait dans mon dernier emploi. Vous commencez avec une table de transfert qui a une ou deux colonnes si votre identifiant est toujours de la même longueur. Ensuite, en utilisant l'identificateur d'enregistrement, vous déplacez les données vers un autre ensemble de tables de transfert, une pour chaque type d'enregistrement que vous avez. Ce sera dans les colonnes pour les données et peut avoir les types de données corrects. Ensuite, vous faites le nettoyage des données que vous devez faire. Ensuite, vous insérez dans la table de production réelle.

Questions connexes