cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk memuatkan data tarikh menggunakan LOAD DATA dalam MySQL

<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粉738046172P粉738046172550 hari yang lalu564

membalas semua(1)saya akan balas

  • P粉852578075

    P粉8525780752023-08-23 09:28:32

    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)
    

    balas
    0
  • Batalbalas