We are searching data for your request:
Upon completion, a link will appear to access the found materials.
Je travaille sur la recherche pulsar et je lis le fichier filterbank en utilisant la technique blimpy en python, mais j'obtiens une erreur.
Ma question est que blimpy est un lecteur de fichiers universel, comme.hf
,.cru
et.fil
. Le fichier que je suis en train de traiter est fourni dans le lien ci-dessous.
Je sais que presto peut traiter ce fichier en utilisant readfil mais j'essaye actuellement d'écrire mon propre code pour la recherche pulsar, pour cela, j'essaye de lire.fil
fichier à l'aide de blimpy, puis appliquez d'autres étapes.
http://www.cv.nrao.edu/~sransom/GBT_Lband_PSR.fil
depuis blimpy import Waterfall import pylab as plt import numpy as np import math from scipy import stats, interpoler file_path="GBT_Lband_PSR.fil" obs = Waterfall(file_path)
Pour créer un nouveau fichier en Python et l'ouvrir pour le modifier, utilisez le ouvert() fonction et spécifiez le nom du fichier suivi du X paramètre.
Lorsque vous utilisez le paramètre "x", vous obtiendrez une erreur si le nom de fichier que vous avez spécifié existe déjà.
Si cela réussit, vous pouvez maintenant écrire dans le fichier en utilisant le écrivez() méthode.
Chaque ligne de texte que vous "écrivez ()" se terminera par un caractère de fin de ligne, de sorte que chaque chaîne supplémentaire sera écrite dans une nouvelle ligne.
C'est une bonne pratique de toujours fermer tout fichier que vous ouvrez en utilisant le Fermer() méthode. Sinon, votre fichier risque de ne pas être enregistré sur le disque.
Vous pouvez également créer et écrire dans un fichier en Python avec moins de lignes en utilisant le avec mot-clé.
Cette approche est recommandée car la suite "with" fermera automatiquement votre fichier après avoir terminé, vous n'aurez donc jamais à vous souvenir de le fermer vous-même.
Après avoir écrit votre fichier, vous pouvez le lire en l'ouvrant avec le bouton r paramètre et appeler le lis() méthode.
Je lis le fichier .fil en utilisant UCBerkeleySETI / blimpy, mais j'obtiens une erreur ? - Astronomie
Pour discuter de tout ce qui concerne la vie d'un développeur de logiciels, mais pas pour des questions de programmation. Une question sur la programmation ?
La règle n°1 est : Être respectueux des autres, du site et de la communauté dans son ensemble.
2. Les discussions techniques sont les bienvenues, mais si vous avez besoin d'une réponse à une question de programmation spécifique, veuillez utiliser les réponses rapides[^], ou pour discuter de votre problème de programmation en profondeur, utilisez les forums de programmation[^]. Nous encourageons les discussions techniques, mais il s'agit d'un forum de discussion générale, et non d'un forum de questions et réponses sur la programmation. Les messages seront déplacés ou supprimés s'ils correspondent mieux ailleurs.
3. Pas de questions d'administrateur système, de mise en réseau, de "comment puis-je configurer XYZ". Pour ceux-ci, utilisez les forums SysAdmin[^] ou Hardware and Devices[^].
4. Pas de politique (y compris enviro-politique[^]), pas de sexe, pas de religion. Il s'agit d'une communauté de développement de logiciels. Il y a beaucoup d'autres sites qui sont bien plus appropriés pour ces discussions.
5. Rien de dangereux pour le travail, rien que vous ne voudriez pas que votre femme/mari, votre petite amie/petit ami, votre mère ou votre petite sœur voient sur votre écran.
6. Toute attaque personnelle, tout spam, toute publicité, tout trolling ou tout abus des règles entraînera la suppression de votre compte.
7. La langue maternelle de tout le monde n'est pas l'anglais. Être compréhensif.
Merci de respecter la communauté et de vous respecter les uns les autres. Nous appartenons à de nombreuses cultures, alors souvenez-vous en. Ne présumez pas que les autres comprennent que vous plaisantez, ne rabaissez personne pour avoir été offensé ou avoir la peau fine.
Nous sommes une communauté de développeurs de logiciels. Laissez les egos à la porte.
Le projet de code | Co-fondateur
MVP Microsoft C++
Vous devenez tous mon canard en caoutchouc. De nouveau. Ceci parce que je travaille seul et que je n'ai pas de collègue avec qui je puisse m'ennuyer.
J'ai écrit des pilotes de papier électronique, et après avoir réglé le changement de mode, j'ai rencontré tellement d'autres problèmes.
Les fiches techniques de ces appareils sont cryptiques.
L'exemple de code fourni par les fabricants frappe invariablement le SPI et fait des choses comme réinitialiser l'appareil 3 fois de suite et d'autres choses qui ne sont pas dignes de production, me laissant devoir deviner les choses (pourquoi sont-ils un peu au lieu d'utiliser l'API SPI ? Quel est le MHz cible ici ? Dois-je vraiment réinitialiser 3 fois de suite ? Est-ce que l'un d'entre eux fonctionnera ? Deux fois, etc.)
Et puis il y a le problème des mises à jour partielles ou complètes.
Des mises à jour complètes sortent de "laver" l'écran. Sinon, vous obtenez une accumulation d'encre résiduelle qui entraîne des images fantômes des images précédentes. L'écran met un certain temps à se rafraîchir lorsqu'il procède de cette façon.
Les mises à jour partielles sont beaucoup plus rapides mais ne "lavent" pas l'écran, ce qui signifie que l'encre s'accumule au fur et à mesure que vous le faites, mais les mises à jour se font rapidement.
Mon pilote fonctionne en quelque sorte, mais il ne se lave pas correctement et je n'aime pas non plus le code. De plus, parfois, j'obtiens un écran étrange pendant le processus de lavage - comme la synchronisation d'une vieille image de télévision à tube qui se détériore, puis cette image est fantôme sur l'écran suivant.
C'est frustrant. Je suis si proche, mais rien de tout cela n'est facile à comprendre.
Ces affichages sont *difficiles*. Je n'ai pas eu cette complication avec ceux qui ne prennent pas en charge les mises à jour partielles, mais la prise en charge des mises à jour partielles sur les appareils (plus chers) qui les prennent en charge est trop importante pour être supprimée, même si c'est très difficile à faire.
Mec, toute cette entreprise de papier électronique s'est transformée en un véritable ours.
Le Lounge n'est pas l'endroit pour poster des questions de programmation. Postez votre question ici[^].
Autrement dit. Je sais seulement que je ne sais rien.
Hey. regarde, peut-être que tu pourrais essayer avec la philosophie à la place
Si quelque chose a une solution. Pourquoi devons-nous nous inquiéter?. S'il n'a pas de solution. Pour quelle raison devons-nous nous inquiéter ?
Aide-moi à comprendre ce que je dis et je t'expliquerai mieux
Noter les réponses utiles est bien, mais dire merci peut être encore plus agréable.
Moins vous en avez besoin, plus vous en avez.
Pourquoi y a-t-il une « autoroute vers l'enfer » et seulement un « escalier vers le paradis » ? Une prédiction de la charge de trafic attendue ?
Moins vous en avez besoin, plus vous en avez.
Pourquoi y a-t-il une « autoroute vers l'enfer » et seulement un « escalier vers le paradis » ? Une prédiction de la charge de trafic attendue ?
"L'augmentation de salaire d'un homme est l'augmentation de prix d'un autre." -Harold Wilson
« Ignifuge ne signifie pas que le feu ne viendra jamais. Cela signifie que lorsque le feu viendra, vous pourrez y résister. » -Michael Simmons
"Vous pouvez facilement juger le caractère d'un homme par la façon dont il traite ceux qui ne peuvent rien faire pour lui." - James D. Miles
Quelle étrange exigence commerciale.
Cela ressemble presque à un devoir.
Aucun étudiant qui se respecte n'essaierait de Tricher, le feraient-ils ?
Comment pensez-vous que c'est un « élève qui se respecte » ?
Moins vous en avez besoin, plus vous en avez.
Pourquoi y a-t-il une « autoroute vers l'enfer » et seulement un « escalier vers le paradis » ? Une prédiction de la charge de trafic attendue ?
Cela a l'air génial, mais ce n'est qu'un outil plus avancé à apprendre. Peut-être plus tard. Je ne suis pas sûr de pouvoir obtenir les autorisations pour le connecter au référentiel git de l'entreprise. Comme je l'ai dit, j'ai juste besoin de quelque chose comme un diagramme de Gantt pour l'instant jusqu'à ce que nous prenions nos esprits ensemble.
La suggestion de Mike est bonne. Si vous n'arrivez pas à vous ressaisir un peu, je vous suggère de réessayer. Faites des recherches sur Google, YouTube et lisez jusqu'à ce que vous ayez une meilleure idée de ce que vous faites. si vous ne voulez pas risquer de perdre tout ce code source alors :
1. Assurez-vous d'avoir une sauvegarde.
2. Découvrez comment utiliser l'outil suggéré par Mike.
. ou prendre une autre profession - si vous ne pouvez pas faire face à GIT, vous êtes dans le mauvais travail.
Je suis à la recherche de suggestions sur ce que Google, YouTube et la lecture.
Je ne crains pas de perdre le code source. Je suis inquiet de le garder organisé. git n'est pas le problème. J'ai deux développeurs juniors : un python et un .Net Foundation qui font le saut pour travailler en tant qu'équipe .Net Core dans AWS avec des exigences YAML et cloud d'entreprise implacables. Essayez-le quelque temps. Il y a une énorme courbe d'apprentissage que les gens supérieurs nient existent. Les responsables de l'itération ne veulent pas perdre de temps à essayer de suivre les branches et les changements car ce n'est pas le développement du projet. Les gestionnaires d'itération n'autorisent pas les versions. car "ils n'ont pas encore eu leur réunion de formation sur les sorties". Nous avons déjà un arriéré. Il y aura trop de branches à suivre sans quelque chose. . Qu'est-ce qui vous fait penser que je peux obtenir des autorisations pour utiliser cet outil avec notre référentiel d'entreprise ? Ce que nous faisons est ridicule. Une semaine, nous faisions ce que nous faisions depuis des années, sur site avec SQL Server, iSeries, TFS, C++ et .Net Framework. La semaine suivante, nous planifiions, construisions, exécutions l'open source agile et l'entrepreneur est hors de vue, me laissant avec une monstruosité .Net Core AWS Lambda. L'équipe était dispersée avec moi restant et deux nouvelles recrues. Avez-vous déjà entendu parler d'un AWS lambda qui comprenait plus de 150 fichiers source C# ? Je suis dans le mauvais travail, mais pas à cause de git. C'est lambda qui va être ma disparition. J'ai besoin de solutions simples et rapides pour organiser cela. Je pourrai probablement faire le code pour faire ce que je veux. C'est du reste qui m'inquiète.
git va bien mais je sais que je vais avoir un nombre énorme de branches et de fonctionnalités tout de suite dans un code très facile à casser et très difficile à dire s'il est cassé. Il a toujours été admis que les tests de régression n'étaient jamais vraiment possibles en raison des milliers d'entrées possibles différentes. Il vous suffisait d'isoler le code d'une unité commerciale pour vous assurer de ne jamais rien casser. C'était bien quand j'étais développeur et que je pouvais gérer chaque détail à l'aide de TFS. Git va avoir beaucoup plus de branches et je suis sûr que les choses vont se casser. J'ai juste besoin d'un outil d'organisation de base pour savoir quelles branches il y a, les fonctionnalités qu'elles contiennent et le stade des fonctionnalités. Quand on pourra faire des releases, le problème sera simplifié mais ce n'est pas encore le cas. Je ne sais pas quand ce sera. De plus, un développeur est en quelque sorte seul avec une fonctionnalité et il ne savait même pas créer sa propre branche. Je n'ai aucune idée de ce qu'il va faire pour faire fonctionner ses trucs et je ne pense pas qu'il se soucie de ce qu'il casse du code existant.
Général Actualités Suggestion Question Bug Réponse Blague Louange Rant Admin
Utilisez Ctrl+Gauche/Droite pour changer de message, Ctrl+Haut/Bas pour changer de fil, Ctrl+Maj+Gauche/Droite pour changer de page.
À la recherche de l'intelligence extraterrestre : SETI passé, présent et futur
Ce livre est une collection d'essais écrits par les mêmes scientifiques et ingénieurs qui ont mené, et continuent de mener, la quête scientifique connue sous le nom de SETI, la recherche de l'intelligence extraterrestre. Divisée en trois parties, la première section, « L'esprit du passé SETI », écrit par les pionniers survivants de cette discipline alors émergente, passe en revue les grands projets entrepris au cours des 50 premières années de la science SETI et les résultats de cette recherche.
Dans la deuxième section, « L'esprit du présent SETI », la science et la technologie actuelles sont discutées en détail, fournissant le contexte technique aux instruments, expériences et techniques analytiques SETI contemporains, y compris le traitement des signaux reçus pour extraire le potentiel communications extraterrestres.
Dans la troisième et dernière section, « The Spirit of SETI Future », le livre se penche sur les directions possibles que SETI prendra au cours des 50 prochaines années, abordant des sujets aussi importants que la construction de messages interstellaires, les risques et les hypothèses des communications interstellaires, quand nous pourrions prendre contact, à quoi pourraient ressembler les extraterrestres et ce qui est susceptible de se produire à la suite d'un tel contact.
Message d'erreur
Après avoir téléchargé et exécuté l'outil de diagnostic, je reçois toujours le message d'erreur de
"Le fichier que vous avez spécifié ne peut pas être ouvert. Assurez-vous qu'il n'est pas actuellement utilisé par un autre programme ou un fichier en lecture seule. L'erreur Windows était "Le système ne peut pas trouver le chemin spécifié.".
Comme l'a dit un autre utilisateur, je peux cliquer sur OK des dizaines de fois et cela finira par disparaître, mais ce n'est pas idéal. Je ne sais pas si ça va marcher ! J'ai déplacé notre QB Desktop 2012 sur une machine Win10. N'ai-je pas correctement déplacé les fichiers ?
Je reçois alors le message Soit il n'y a pas de client de messagerie par défaut, soit le client de messagerie actuel ne peut pas répondre à la demande de messagerie."
S'il vous plaît, aidez-moi à comprendre si je l'ai déplacé correctement vers le nouvel ordinateur !
LA CLÉ MAÎTRE
Dant a déclaré que lorsque l'équipage roumain a produit en série leurs dispositifs de calage, ils l'ont fait en utilisant le même numéro de carte bancaire autrichien volé. Cela signifiait que maintenant les services secrets et Citi avaient une clé principale pour découvrir les mêmes dispositifs de calage installés dans d'autres guichets automatiques.
En effet, chaque fois que le gang compromettait un nouveau guichet automatique, ce numéro de compte autrichien traversait les réseaux mondiaux de cartes de paiement, leur indiquant exactement quel guichet automatique venait d'être piraté.
"Nous avons donné ce numéro aux réseaux de cartes, et ils ont pu voir tous les endroits où cette carte avait été utilisée sur leurs réseaux auparavant", a déclaré Dant. "Nous avons également configuré les choses afin que nous recevions des alertes à chaque fois que ce numéro de carte apparaissait, et nous avons commencé à recevoir des tonnes d'alertes et à trouver ces reflets partout dans le monde."
Malgré tous leurs détectives, Dant et ses collègues n'ont jamais vraiment vu le shimming décoller aux États-Unis, du moins loin d'être aussi répandu qu'au Mexique, a-t-il déclaré.
Le problème était que de nombreuses banques au Mexique et dans d'autres régions d'Amérique latine n'avaient pas correctement mis en œuvre la norme de carte à puce, ce qui signifiait que les voleurs pouvaient utiliser des données de carte à puce calées pour effectuer l'équivalent d'anciennes transactions par carte à bande magnétique.
Au moment où les miroitements du gang roumain ont commencé à apparaître à New York, la grande majorité des banques américaines avaient déjà correctement mis en œuvre le traitement par carte à puce de telle sorte que les mêmes transactions bidon par carte à puce qui transitaient par les banques mexicaines échouaient tout simplement à chaque fois qu'elles ont été jugés contre des institutions américaines.
"Cela n'a jamais décollé aux États-Unis, mais ce genre d'activité s'est poursuivi comme une traînée de poudre pendant des années au Mexique", a déclaré Dant.
L'autre raison pour laquelle le calage n'est jamais apparu comme une menace majeure pour les institutions financières américaines est que de nombreux guichets automatiques ont été mis à niveau au cours de la dernière décennie, de sorte que leurs emplacements d'acceptation de cartes sont beaucoup plus minces, a observé Dant.
"Cette carte de téléchargement est plus épaisse que beaucoup de cartes de débit, donc un certain nombre d'institutions ont rapidement remplacé les anciens emplacements pour cartes par du matériel plus récent qui réduisait la hauteur d'un emplacement pour carte afin que vous puissiez peut-être obtenir un chatoiement et une carte de débit, mais certainement pas un miroitement et l'une de ces cartes de téléchargement », a-t-il déclaré.
Peu de temps après que les miroitements des guichets automatiques aient commencé à apparaître dans les banques au Mexique, KrebsOnSecurity a passé quatre jours au Mexique à retracer les activités d'un gang du crime organisé roumain qui avait récemment créé sa propre société de guichets automatiques appelée Intacash.
Des sources ont déclaré à KrebsOnSecurity que le gang roumain payait également des techniciens de fournisseurs de guichets automatiques concurrents pour moderniser les distributeurs de billets avec des écumoires Bluetooth qui se connectaient directement à l'électronique à l'intérieur. Connectés à l'alimentation interne du guichet automatique, ces écumeurs pourraient collecter des données de carte indéfiniment, et les données pourraient être collectées sans fil avec un téléphone intelligent.
Rapport de suivi de l'année dernière par le Projet de signalement du crime organisé et de la corruption (OCCRP) a découvert qu'Intacash et ses associés avaient compromis plus de 100 guichets automatiques à travers le Mexique à l'aide d'écumeurs capables de rester en place sans être détectés pendant des années. L'OCCRP, qui a surnommé le groupe roumain « The Riviera Maya Gang », estime que le syndicat du crime a utilisé des données de cartes clonées et des codes PIN volés pour voler plus de 1,2 milliard de dollars sur les comptes bancaires des touristes visitant la région.
Le mois dernier, les autorités mexicaines ont arrêté Florian "The Shark" Tudor, le patron d'Intacash et le chef de file réputé du syndicat roumain de l'écrémage. Les autorités ont accusé le groupe de Tudor de se spécialiser également dans la traite des êtres humains, ce qui leur a permis d'envoyer des membres de gangs compromettre des guichets automatiques de l'autre côté de la frontière aux États-Unis.
Brave Search est disponible en version bêta dans le monde entier sur tous les navigateurs Brave (de bureau, Android et iOS) comme l'une des options de recherche aux côtés d'autres moteurs de recherche, et deviendra la recherche par défaut dans le navigateur Brave plus tard cette année. Il est également disponible à partir de n'importe quel autre navigateur sur search.brave.com.
Brave Search est différent des autres moteurs de recherche car il utilise son propre index et suit des principes différents :
- Confidentialité : pas de suivi ni de profilage des utilisateurs.
- L'utilisateur d'abord : l'utilisateur vient en premier, pas les industries de la publicité et des données.
- Indépendance : Brave a son propre index de recherche pour répondre aux requêtes courantes en privé sans dépendre d'autres fournisseurs.
- Choix : bientôt, des options pour la recherche payante sans publicité et la recherche financée par la publicité.
- Transparence : pas de méthodes ou d'algorithmes secrets pour biaiser les résultats, et bientôt, des modèles de classement ouverts organisés par la communauté pour assurer la diversité et empêcher les biais algorithmiques et la censure pure et simple.
- Transparence : intégration de premier ordre entre le navigateur et la recherche sans compromettre la confidentialité, de la personnalisation aux résultats instantanés selon les types d'utilisateurs.
- Ouverture : Brave Search sera bientôt disponible pour alimenter d'autres moteurs de recherche.
Va-t-il gagner du terrain auprès des utilisateurs ? Le navigateur Brave a fait sensation lors de ses débuts, il sera donc intéressant de garder un œil sur ce lancement de moteur de recherche.
Google ne prendra plus en charge son service de distribution d'e-mails à partir du 1er juillet et je m'y prépare grâce au travail de mon ami Frank Taylor, qui peaufine un remplaçant. Cependant, j'ai déjà eu quelques rapports d'e-mails non livrés. Donc, si vous êtes abonné par e-mail à Rêves Centauri, soyez patient avec nous pendant que Frank met le nouveau service en service. Cela peut prendre quelques jours de plus. Il ne sera pas nécessaire de se réabonner, car la liste d'abonnement existante sera transférée vers le nouveau flux.
Je n'ai jamais fumé d'herbe. En lisant un exemple du genre de pensées que j'ai lorsque j'ai été complètement sobre, vous pouvez voir que je n'en ai jamais eu besoin.
Comme toujours, merci d'utiliser mes liens d'affiliation Amazon (États-Unis, Royaume-Uni, Canada).
Erreur Outlook iCloud 0x800706ba
Lors de la configuration d'iCloud pour la synchronisation avec Outlook, vous pouvez recevoir le message d'erreur suivant :
Cette erreur iCloud peut être le résultat d'un compte IMAP défini comme fichier de données par défaut dans Outlook.
Lorsque vous arrivez au point où iCloud vous demande quels dossiers synchroniser, Tous les calendriers, contacts, tâches ou alors Certains calendriers, contacts, tâches, choisissez Certains calendriers, Contacts, Tâches.
Décochez ensuite tous les dossiers pour que rien sur l'ordinateur ne se synchronise avec iCloud, seul iCloud se synchronise.
Si vous avez du contenu dans les dossiers dont vous avez besoin dans iCloud, vous pouvez les déplacer vers les dossiers iCloud après l'ajout d'iCloud à Outlook.
Si l'erreur n'est pas causée par la tentative de synchronisation des événements et des contacts jusqu'à iCloud et que vous utilisez un compte IMAP avec les dossiers "Calendrier (cet ordinateur uniquement)" et "Contact (cet ordinateur uniquement)", essayez ceci en ajoutant un fichier PST à votre profil et définissez-le par défaut. Une fois iCloud configuré, vous pouvez définir le fichier de données IMAP par défaut et supprimer le fichier .PST.
Erreur de lecture du fichier de coordonnées
lorsque j'importe un fichier de coordonnées à l'aide de l'option de courbe 3D, une fenêtre apparaît indiquant cette erreur de lecture du fichier de coordonnées.
Pouvez-vous svp donner une solution à ce problème.
j'avais joint le fichier aussi
lorsque j'importe un fichier de coordonnées à l'aide de l'option de courbe 3D, une fenêtre apparaît indiquant cette erreur de lecture du fichier de coordonnées.
Pouvez-vous svp donner une solution à ce problème.
j'avais joint le fichier aussi
J'ai la même erreur de ce sujet DS erreur de lecture du fichier de coordonnées.
Je ne comprends pas que le fichier NACA-4412 fonctionne bien pour l'importation, mais mon autre fichier reçoit cette erreur.
Je cherche dans le forum CFD mais rien ne peut résoudre mon problème voici une solution :
Le fichier txt doit être enregistré en ANSI et non en UNICODE (il enregistre comme ça par défaut)
- Mettez le commentaire # au début de chaque colonne (comme #x, #y etc)
- La dernière ligne doit être 1 0, ce qui signifie effacer la colonne par rapport aux coordonnées x,y,z car elles sont identiques à la première (je suppose que vous avez créé un profil aérodynamique avec bord de fuite fermé)
- Enregistrez le fichier au format ANSI et non unicode.
Je ne sais pas où se trouve mon erreur dans le fichier Clark Y.txt
Je génère à partir du site des outils de voilure
ma version ansys est 17.1, excel version 2013.
Je sauve le fichier en txt délimité par des tabulations et rien ne fonctionne.
J'ai la même erreur de ce sujet DS erreur de lecture du fichier de coordonnées.
Je ne comprends pas que le fichier NACA-4412 fonctionne bien pour l'importation, mais mon autre fichier reçoit cette erreur.
Je cherche dans le forum CFD mais rien ne peut résoudre mon problème voici une solution :
Le fichier txt doit être enregistré en ANSI et non en UNICODE (il enregistre comme ça par défaut)
Merci pankaj… Il a sauvé mes données. Je voulais lire à partir d'un dossier spécifique, alors je l'ai modifié pour l'emplacement.
excel_data_df = pandas.read_excel(‘records.xlsx’, sheet_name=’Cars’, usecols=[‘Car Name’, ‘Car Price’]) me donne un cadre de données vide. Avons-nous besoin de faire une configuration?
Je dois dire que c'est ‘génial’
Merci, c'était très utile.
Merci, c'était très utile
Merci, ceci était vraiment utile!
Qu'est-ce que nous avons un fichier xlsb au lieu de xlsx ?
Laisser une réponse Annuler la réponse
10 Exemples de commandes Oracle SQLLDR (Tutoriel Oracle SQL*Loader)
Si vous utilisez la base de données Oracle, vous devrez peut-être à un moment donné télécharger des données dans les tables à partir d'un fichier texte.
Cet article fournit 10 exemples pratiques sur la façon de télécharger des données d'un fichier plat vers des tables Oracle.
Fichier de données d'entrée pour SQL*Loader
Il s'agit du fichier texte d'entrée qui contient les données qui doivent être chargées dans une table Oracle. Chaque enregistrement doit être sur une ligne distincte et les valeurs de colonne doivent être délimitées par un caractère délimiteur commun. Pour certains des exemples mentionnés ci-dessous, nous utiliserons le fichier employee.txt suivant pour télécharger les données dans la table des employés.
Fichier de contrôle SQL*Loader
Celui-ci contient les instructions de l'utilitaire sqlldr. Cela indique à sqlldr l'emplacement du fichier d'entrée, le format du fichier d'entrée et d'autres informations facultatives sur les métadonnées requises par sqlldr pour télécharger les données dans les tables Oracle.
Le fichier de contrôle ci-dessus indique ce qui suit :
- infile – Indique l'emplacement du fichier de données d'entrée
- dans la table – Indique le nom de la table où ces données doivent être insérées
- champs terminés par – Indique le délimiteur utilisé dans le fichier d'entrée pour séparer les champs
- ( id, nom, service, salaire ) – Répertorie le nom des noms de colonne dans la table dans laquelle les données doivent être téléchargées
1. Exemple de téléchargement de base à l'aide de SQL*Loader
Tout d'abord, créez la table des employés comme indiqué ci-dessous.
Créez ensuite le fichier de contrôle qui explique ce qui doit être téléchargé et où.
Remarque : Si vous avez les valeurs dans le fichier de données entre guillemets doubles, utilisez ceci dans votre fichier de contrôle : champs terminés par “,” éventuellement entouré par ‘”‘
Remarque : Si vous n'avez pas créé la table, vous obtiendrez le message d'erreur suivant :
Vous pouvez transmettre l'ID utilisateur et le mot de passe à la commande sqlldr en utilisant l'un des formats suivants. Comme vous le voyez ci-dessous, ces deux éléments vous demanderont l'emplacement du fichier de contrôle, car il n'a pas été indiqué dans la ligne de commande.
Exécutez la commande sqlldr pour télécharger ces nouveaux enregistrements dans la table vide en spécifiant à la fois uid/pwd et l'emplacement du fichier de contrôle comme indiqué ci-dessous.
Vérifiez que les enregistrements sont créés dans la base de données
Cela créera le fichier journal de sortie au même nom que le fichier de données, mais avec l'extension .log (au lieu de .ctl). Sortie partielle illustrée ci-dessous.
Si vous êtes nouveau sur la base de données Oracle et que vous souhaitez l'installer, suivez ce guide d'installation Oracle 11g.
2. Insertion d'enregistrements supplémentaires
Supposons que vous souhaitiez ajouter deux nouveaux employés à la table des employés à partir du fichier newemployee.txt suivant.
Si vous créez un fichier de contrôle similaire à celui de l'exemple précédent, vous pouvez obtenir le message d'erreur suivant.
Ce qui précède indique que la table doit être vide avant de pouvoir télécharger des données à l'aide de sql*loader.
Si vous souhaitez insérer plus de données dans les tables sans avoir à supprimer les lignes existantes, utilisez la commande “append’ comme indiqué dans le fichier de contrôle suivant.
Maintenant, si vous faites sqlldr, les données seront ajoutées.
Vérifiez que les enregistrements sont ajoutés avec succès
3. Données à l'intérieur du fichier de contrôle à l'aide de BEGINDATA
Vous pouvez également spécifier les données directement dans le fichier de contrôle lui-même à l'aide du mot-clé BEGINDATA. c'est-à-dire que tout ce qui vient après BEGINDATA sera traité comme des données à télécharger dans le tableau comme indiqué ci-dessous.
Remarque : le fichier infile indiquera ‘*’ dans ce cas, car il n'y a pas de nom de fichier de données d'entrée pour cet exemple.
Exécutez sqlldr pour télécharger les données du fichier de contrôle.
4. Format de date et délimiteur différent
Cet exemple montre comment spécifier un format de date dans le fichier de contrôle et comment gérer différents délimiteurs dans un fichier de données
L'exemple suivant a différents délimiteurs ($ après le nom, ^ après le département).
Créez le fichier de contrôle suivant et indiquez les délimiteurs de champ pour chaque champ en utilisant “terminé par” comme indiqué ci-dessous.
Chargez les données à l'aide de sqlldr comme indiqué ci-dessous.
Vérifiez que les données ont été chargées correctement, comme indiqué ci-dessous.
5. Téléchargement de données de longueur fixe
Si vous avez un fichier de données sans données de longueur fixe (c'est-à-dire sans délimiteur), vous pouvez utiliser cet exemple pour télécharger ces données.
Pour cet exemple, utilisons le fichier suivant qui contient des données de longueur fixe. Par exemple, les trois premiers caractères sont toujours le numéro de l'employé, les 5 caractères suivants sont toujours le nom de l'employé, etc.
Créez le fichier de contrôle suivant, dans lequel vous spécifiez la position de chaque champ comme indiqué ci-dessous en utilisant la syntaxe “Position(start:end)”.
Chargez ces données de longueur fixe à l'aide du sqldr comme indiqué ci-dessous.
Vérifiez que les données ont été chargées.
6. Modifiez les données pendant le téléchargement
Vous pouvez également masser les données et les modifier pendant le téléchargement en fonction de certaines règles.
Dans le fichier de contrôle suivant :
- id est incrémenté de 999 avant le téléchargement. c'est-à-dire que si l'identifiant emp est de 100 dans le fichier de données, il sera chargé en tant que 1099
- Convertissez le nom en majuscule et chargez-le. Cela utilise la fonction supérieure.
- Si le département contient la valeur “Technology”, remplacez-la par “Techies”. Cela utilise la fonction de décodage
Chargez les données à l'aide de ce fichier de contrôle qui massera les données avant de les télécharger.
Vérifiez que les données ont été modifiées lors du chargement conformément à nos règles.
7. Charger des données à partir de plusieurs fichiers
Pour charger des données à partir de plusieurs fichiers, il vous suffit de spécifier plusieurs infiles dans le fichier de contrôle.
Le fichier de contrôle suivant charge les données de deux fichiers de données différents (employee.txt et newemployee.txt) dans la table des employés.
Chargez les données à l'aide de ce fichier de contrôle qui téléchargera les données de plusieurs fichiers de données, comme indiqué ci-dessous.
8. Charger des données dans plusieurs tables
Créez une autre table appelée bonus qui contiendra des colonnes d'identifiant d'employé et de bonus.
Créez le fichier de données employee-bonus.txt qui contient les champs : identifiant, nom, département, salaire, bonus
Créez le fichier de contrôle comme indiqué ci-dessous, qui téléchargera les données du fichier ci-dessus dans deux tables différentes. Comme indiqué ci-dessous, vous devriez avoir deux commandes “into table” et spécifier la position des données qui doivent être utilisées pour télécharger les données dans cette colonne.
Chargez les données dans plusieurs tables à l'aide de ce fichier de contrôle, comme indiqué ci-dessous.
Vérifiez que les données ont été chargées dans plusieurs tables avec succès.
9. Gestion des enregistrements incorrects (rejetés)
Dans l'exemple suivant, nous avons deux mauvais enregistrements. Les identifiants d'employé 300 et 500 ont une colonne de salaire qui n'est pas numérique.
Utilisez le fichier de contrôle suivant pour cet exemple.
Chargez les données (y compris les enregistrements invalides) à l'aide de ce fichier de contrôle comme indiqué ci-dessous.
Comme vous le voyez dans la sortie abvoe, il est toujours indiqué “logical record count 5”, mais vous devez vérifier les fichiers journaux pour voir s'il a rejeté des enregistrements.
Le fichier journal indique que 2 enregistrements sont rejetés comme indiqué ci-dessous :
Par défaut les enregistrements rejetés sont stockés dans un fichier qui porte le même nom que le fichier de données (mais avec l'extension .bad)
Comme vous le voyez ci-dessous, la table des employés n'a que 3 enregistrements (car 2 d'entre eux ont été rejetés).
10. Charger des lignes spécifiques à partir d'un fichier de données
Si vous souhaitez charger uniquement un enregistrement spécifique à partir d'un fichier de données, utilisez le WHEN dans le fichier de contrôle.
Ajoutez la ligne “when” à côté de la ligne “into table”. Dans le fichier de contrôle suivant, la clause when indique qu'elle ne chargera que les enregistrements ayant pour département “Technology”.
Chargez les données sélectives (uniquement les enregistrements “Technology”) à l'aide de ce fichier de contrôle comme indiqué ci-dessous.
Comme vous le voyez dans la sortie ci-dessus, il est toujours indiqué « nombre d'enregistrements logiques 5 », mais vous devez vérifier les fichiers journaux pour voir combien d'enregistrements ont été chargés et combien d'enregistrements ont été supprimés car ils ne correspondaient pas à la condition quand .
Ce qui suit dans le fichier journal montre que 5 enregistrements ont été lus et que 2 d'entre eux ont été supprimés car ils ne correspondaient pas à la condition when.
Vérifiez que seuls les enregistrements sélectifs ont été chargés dans la table.
Si vous avez aimé cet article, vous aimerez peut-être aussi..
Je vais lire Oracle & PL/SQL le mois prochain.
Merci pour l'article.
Super article.. merci pour les exemples
Nous avons besoin de plus d'exemples comme celui-ci……..
excellent article j'adore tous vos articles
Merci pour tout
Vraiment génial. Appréciez ….
Question. Mon fichier de données a 30 colonnes. Le tableau comporte 38 colonnes. Je n'ai besoin de choisir que 3 colonnes du fichier de données (5e, 10e et 25e colonnes) et de les charger dans le tableau (colonne 3e, 9e et 16e colonne du tableau). Comment puis-je faire cela? Une idée?
@Ramesh : Article génial. Langage très simple et exemples compréhensibles. Merci d'avoir partagé. J'ai quelques questions à vous poser :
1) Dans l'exemple 8, la clause terminée n'est pas mentionnée, car les champs se terminent par un espace. Donc par défaut les espaces sont considérés comme des délimiteurs ?
2) J'ai lu que Badfile peut être explicitement spécifié à l'aide de la clause ‘BADFILE filename.extension’. Mais sur certains liens, je le vois mentionné comme ‘BAD=file.extension’
Laquelle est correcte.
3) Sur le lien ci-dessous :
http://stackoverflow.com/questions/8039012/disable-bad-discard-file-log-on-sql-loader
il est mentionné qu'un mauvais fichier peut être désactivé en définissant BAD=NUL (sous Windows) ou en redirigeant une mauvaise sortie vers /dev/null (sous Linux). C'est possible? Je ne vois aucune référence sur le site Oracle pour cela.
@Manjula :
Ramesh a expliqué la réponse à votre question dans l'exemple 8.
Bonjour Ramesh,
En ce qui concerne la désactivation des mauvais fichiers, j'ai confirmé. Dans Windows, cela peut être fait en utilisant: BADFILE NUL
Et sous Linux, cela peut être fait en utilisant: BADFILE /dev/null
J'ai besoin de votre aide pour charger le fichier unique où le scénario est assez maladroit pour moi :
Le fichier de données sale_exec.dat :
_____________________________________________
CUST_TYPE | DATE | AMT | DISCOUNT_AMT
X |20120101 | 200 | 20
X |20120101 | 400 | 30
O |20120303 | 300 |40
Z |20120303 | 20 |50
_______________________________________________
La structure du tableau est :
VENTE DE TABLE
<
NUMÉRO DE VENDEUR,
REPORT_DATE DATE,
LOAD_DATE DATE,
MONTANT NUMÉRO
>
Scénario:
1. Les données du fichier sales_exec.dat doivent être chargées dans la table SALES
2. Lorsque CUST_TYP est X, le Vendorid doit être 1, lorsque Y, il doit charger l'ID du fournisseur avec 2 et de même lorsqu'il est Z, l'ID du fournisseur doit être 3
3. Lorsque le CUST_TYP est X et Y, je dois charger les enregistrements avec l'AMT dans le fichier de données dans le champ AMOUNT de la table SALES
4. Lorsque le CUST_TYP est Z, je dois alors charger les enregistrements avec le DISCOUNT_AMT dans le fichier de données dans la table SALES AMOUNT FIELD
Les données de la table du fichier de données après le chargement devraient ressembler à ci-dessous :
_____________________________________________
VENDEUR | REPORT_DATE| MONTANT
1 |20120101 | 200
1 |20120101 | 400
2 |20120303 | 300
3 |20120303 | 50
_______________________________________________
Please let me know how should I proceed further and what should be my cntl file.
@Rohit,
This is not possible using SQL loaders. Because data type of VendorId is numeric and from infile you are getting characters. You have two approches here:
1) Either you process your infile first and replace X by 1, y by 2, z by 3. Then use SQL loader using when condition to check what vendoe id is it and amount column should take what value. OR
2) You need to use external tables and SQL functions in this scenario.
Refer:
http://asktom.oracle.com/pls/asktom/f?p=100:11:0. P11_QUESTION_ID:1710164700346004127
We can do it using a control file this way.
I tried using the boundfiller,decodes and my CONTROL file will look like this:
INFILE=’sale_exec.dat’
APPEND
PRESERVE BLANKS
INTO TABLE SALES
FIELDS TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘”‘ TRAILING NULLCOLS
(
c1 BOUNDFILLER,
REPORT_DATE,
c2 BOUNDFILLER,
c3 BOUNDFILLER,
VENDORID “to_number(DECODE(:c1,’X’,1,’Y’,2,3))”,
AMOUNT “to_number(DECODE(:c1,’Z’,c3,c2))”
)
Hi Ramesh,
this is a very good writeup! Is there anything more advanced which SQLLDR can handle? Would be great if you could write something on this too.
HI all,
I wanted too load mulitple files into the same tables from different ctl files for test work. The problem is i need to be able too identify the different files loaded in de database.
For example :
file1.ctl needs to be de name in de database under for example column ‘filename’
file2.ctl needs to be de name in de database under for example column ‘filename’
VENDORID | REPORT_DATE| AMOUNT|Filename
1 |20120101 | 200 |file1.ctl
1 |20120101 | 400 |file2.ctl
Anyone knows how i can get this accomplished.
Thanks for giving such valuable examples. Could you please give one example of control file to upload data in a file and then call a procedure to implement some logic and populate main table.
Very nice article.
Better understandable format. Explained well.
We need more examples like this.
I have a flatfile(notepad), which has data not in order, fields separated by space, that too not orderly separated. Between fields there is space, but not ordered one. like
consultant name vendor details email contact end client
David Raj jason Roy [email protected] (010) 110-1101 CAAM
above line, you can notice that there is no specified space between fields. i have nearly 7000 rows of data in notepad. I tried using field terminated by space but, it has taken the entire row of data from notepad as a single column data in table, remaining fields in table are empty.
In this case is there any kind of solution/control file format to load the data into tables. It would be great if anyone can solve my problem.