Bagaimana untuk memuatkan data tarikh menggunakan LOAD DATA dalam MySQL
P粉738046172
P粉738046172 2023-08-22 22:12:49
0
1
536
<p>Format tarikh lalai untuk lajur tarikh dalam MySQL ialah <kod>YYYY-MM-DD HH:MM:SS</code>. </p> <p>Fail data yang saya cuba muatkan mempunyai medan tarikh dalam format <kod>DD-MON-YY HH:MM:SS</code>. Apabila saya memuatkan fail ini menggunakan perintah <kod>LOAD DATA</code> </p> <p>Ini adalah ujian saya menggunakan pilihan <kod>STR_TO_DATE</code></p> <p><strong>测试文件(test_temp.csv)</strong></p> <pre class="brush:php;toolbar:false;">c1, c2 07-JUN-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;">huraikan temp_test; +-------+-------------+------+-----+---------+---- ---+ | Medan | Taip | batal | Kunci | Lalai | Tambahan | +-------+-------------+------+-----+---------+---- ---+ | c1 | tarikh masa | YA | | NULL | | | c2 | varchar(10) | YA | | NULL | | +-------+-------------+------+-----+---------+---- ---+</pra> <p><strong>数据加载命令:</strong></p> <pre class="brush:php;toolbar:false;">muat data dalam fail '/var/lib/mysql/DataSet-1/temp_test.csv' abai ke dalam table temp_test medan ditamatkan oleh ',' disertakan dengan '"' baris ditamatkan dengan 'rn' abaikan 1 baris (@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;">Soalan OK, 2 baris terjejas, 2 amaran (0.00 saat) Rekod: 2 Dipadamkan: 0 Dilangkau: 0 Amaran: 0 MySQL> menunjukkan amaran; +--------+------+------------------------------------ ----------------------------------------+ | Tahap | Kod | Mesej | +--------+------+------------------------------------ ----------------------------------------+ | Ralat | 1411 | Nilai datetime salah: '07-JUN-12 22:50:19' untuk fungsi str_to_date | | Ralat | 1411 | Nilai datetime salah: '07-JUN-13 22:50:19' untuk fungsi str_to_date | +--------+------+---------------------------------- ----------------------------------------+ MySQL> pilih * daripada temp_test; +------+------+ | c1 | c2 | +------+------+ | NULL | abc | | NULL | bcd | +------+------+</pra> <p>问题出在:</p> <ol> <li>输入日期列(应该是<kod>07-JUN-12</kod>还是<kod>07-Jun-12</kod>)/或< <li>我的格式字符串(<kod>%d-%b-%y</code>)或</li> <li>其他原因?</li> </ol><p><br /></p>
P粉738046172
P粉738046172

membalas semua(1)
P粉852578075

milik andaSTR_TO_DATE()的格式字符串无效。您的样本数据中的小时使用24小时制(%H%k),而不是12小时制(%h). Anda boleh melihat semua penentu format tarikh yang mungkin di sini.

akan

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

telah diubah suai kepada

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

Kenyataan anda mungkin kelihatan seperti ini

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');

Selepas memuatkan data sampel anda

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)
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan