Comment charger des données de date en utilisant LOAD DATA dans MySQL
<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>