So laden Sie Datumsdaten mit LOAD DATA in MySQL
P粉738046172
2023-08-22 22:12:49
<p>Das Standarddatumsformat für eine Datumsspalte in MySQL ist <code>JJJJ-MM-TT HH:MM:SS</code>. </p>
<p>Die Datendatei, die ich laden möchte, enthält ein Datumsfeld im Format <code>TT-MON-JJ HH:MM:SS</code>. Wenn ich diese Datei mit dem Befehl <code>LOAD DATA</code> lade, gerät die Datenbank durcheinander und setzt alle Datumseinträge auf <code>00:00:00</code> </p>
<p>Dies ist mein Test mit der Option <code>STR_TO_DATE</code>, aber er funktioniert nicht.</p>
<p><strong>测试文件(test_temp.csv)</strong></p>
<pre class="brush:php;toolbar:false;">c1, c2
07.06.12 22:50:19, „abc“
07.06.13 22:50:19, „bcd“</pre>
<p><strong>测试表(temp_test)</strong></p>
<pre class="brush:php;toolbar:false;">describe temp_test;
+-------+-------------+------+-----+---------+---- ---+
| Feld | Geben Sie | ein Null | Schlüssel | Standard | Extra |
+-------+-------------+------+-----+---------+---- ---+
| c1 | Datum/Uhrzeit | JA | | NULL | |
| c2 | varchar(10) | JA | | NULL | |
+-------+-------------+------+-----+---------+---- ---+</pre>
<p><strong>数据加载命令:</strong></p>
<pre class="brush:php;toolbar:false;">Daten laden
Infile '/var/lib/mysql/DataSet-1/temp_test.csv'
ignorieren
in die Tabelle temp_test
Felder, die mit „,“ abgeschlossen sind
umschlossen '"'
Zeilen, die mit „rn“ abgeschlossen sind
Ignoriere 1 Zeile
(@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;">Abfrage OK, 2 Zeilen betroffen, 2 Warnungen (0,00 Sek.)
Datensätze: 2 Gelöscht: 0 Übersprungen: 0 Warnungen: 0
MySQL> Warnungen anzeigen;
+-------+------+---------------------------------- -------------------------+
| Ebene | Code | Nachricht |
+-------+------+---------------------------------- -------------------------+
| Fehler | 1411 | Falscher Datum/Uhrzeit-Wert: „07-JUN-12 22:50:19“ für Funktion str_to_date |
| Fehler | 1411 | Falscher Datum/Uhrzeit-Wert: „07-JUN-13 22:50:19“ für Funktion str_to_date |
+-------+------+---------------------------------- -------------------------+
MySQL> wähle * aus temp_test;
+------+------+
| c1 | c2 |
+------+------+
| NULL | abc |
| NULL | bcd |
+------+------+</pre>
<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>
您的
STR_TO_DATE()
的格式字符串无效。您的样本数据中的小时使用24小时制(%H
或%k
),而不是12小时制(%h
)。您可以在这里查看所有可能的日期格式说明符。将
修改为
您的语句可能如下所示
使用您的样本数据加载后