Comment charger des données de date en utilisant LOAD DATA dans MySQL
P粉738046172
P粉738046172 2023-08-22 22:12:49
0
1
507
<p>Le format de date par défaut pour une colonne de date dans MySQL est <code>AAAA-MM-JJ HH:MM:SS</code>. </p> <p>Le fichier de données que j'essaie de charger comporte un champ de date au format <code>DD-MON-YY HH:MM:SS</code>. Lorsque je charge ce fichier à l'aide de la commande <code>LOAD DATA</code>, la base de données est confuse et définit toutes les entrées de date sur <code>0000-00-00 00:00:00</code> </p> <p>C'est mon test utilisant l'option <code>STR_TO_DATE</code> mais cela ne fonctionne pas.</p> <p><strong>测试文件(test_temp.csv)</strong></p> <pre class="brush:php;toolbar:false;">c1, c2 07 JUIN 12 22:50:19, "abc" 07-JUN-13 22:50:19, "bcd"</pre> <p><strong>测试表(temp_test)</strong></p> <pre class="brush:php;toolbar:false;">décrire temp_test; +-------+--------+------+-----+---------+---- ---+ | Champ | Tapez | Nulle | Clé | Par défaut | Supplémentaire | +-------+--------+------+-----+---------+---- ---+ | c1 | dateheure | OUI | | NULL | | | c2 | varchar(10) | OUI | | NULL | | +-------+--------+------+-----+---------+---- ---+≪/pré> <p><strong>数据加载命令:</strong></p> <pre class="brush:php;toolbar:false;">charger les données fichier '/var/lib/mysql/DataSet-1/temp_test.csv' ignorer dans la table temp_test champs terminés par ',' enfermé par '"' lignes terminées par 'rn' ignorer 1 ligne (@var_c1,c2) set c1 = STR_TO_DATE (@var_c1,'%d-%b-%y %h:%i:%s');</pre> <p><strong>输出</strong></p> <pre class="brush:php;toolbar:false;">Requête OK, 2 lignes affectées, 2 avertissements (0,00 sec) Enregistrements : 2 Supprimés : 0 Ignorés : 0 Avertissements : 0 MySQL> afficher des avertissements ; +-------+------+---------------------------------- ---------------------------------------+ | Niveau | Codes | Messages | +-------+------+---------------------------------- ---------------------------------------+ | Erreur | 1411 | Valeur datetime incorrecte : '07-JUN-12 22:50:19' pour la fonction str_to_date | | Erreur | 1411 | Valeur datetime incorrecte : '07-JUN-13 22:50:19' pour la fonction str_to_date | +-------+------+---------------------------------- ---------------------------------------+ MySQL> sélectionnez * dans temp_test ; +------+------+ | c1 | c2 | +------+------+ | NULL | abc | | NULL | bcd | +------+------+</pré> <p>问题出在:</p> <ol> <li>输入日期列(应该是<code>07-JUN-12</code>还是<code>07-Jun-12</code>)或</li> <li>我的格式字符串(<code>%d-%b-%y</code>)或</li> <li>其他原因?</li> </ol><p><br /></p>
P粉738046172
P粉738046172

répondre à tous(1)
P粉852578075

le vôtreSTR_TO_DATE()的格式字符串无效。您的样本数据中的小时使用24小时制(%H%k),而不是12小时制(%h). Vous pouvez voir tous les spécificateurs de format de date possibles ici.

volonté

%d-%b-%y %h:%i:%s

a été modifié en

%d-%b-%y %H:%i:%s
         ^^

Votre déclaration pourrait ressembler à ceci

LOAD DATA INFILE '/path/to/temp_test.csv'
IGNORE INTO TABLE temp_test
  FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  LINES TERMINATED BY '\r\n' -- or '\n'
  IGNORE 1 LINES
(@c1, c2)
SET c1 = STR_TO_DATE(@c1,'%d-%b-%y %H:%i:%s');

Après le chargement de vos exemples de données

mysql> select * from temp_test;
+---------------------+------+
| c1                  | c2   |
+---------------------+------+
| 2012-06-07 22:50:19 | abc  |
| 2013-06-07 22:50:19 | bcd  |
+---------------------+------+
2 rows in set (0.00 sec)
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!