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
473

Le format de date par défaut pour une colonne de date dans MySQL est AAAA-MM-JJ HH:MM:SS.

Le fichier de données que j'essaie de charger comporte un champ de date au format DD-MON-YY HH:MM:SS. Lorsque je charge ce fichier à l'aide de la commande LOAD DATA, la base de données est confuse et définit toutes les entrées de date sur 0000-00-00 00:00:00

C'est mon test utilisant l'option STR_TO_DATE mais cela ne fonctionne pas.

测试文件(test_temp.csv)

c1, c2 07 JUIN 12 22:50:19, "abc" 07-JUN-13 22:50:19, "bcd"

测试表(temp_test)

décrire temp_test; +-------+--------+------+-----+---------+---- ---+ | Champ | Tapez | Nulle | Clé | Par défaut | Supplémentaire | +-------+--------+------+-----+---------+---- ---+ | c1 | dateheure | OUI | | NULL | | | c2 | varchar(10) | OUI | | NULL | | +-------+--------+------+-----+---------+---- ---+≪/pré> 

数据加载命令:

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

输出

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 | +------+------+ 

问题出在:

  1. 输入日期列(应该是07-JUN-12还是07-Jun-12)或
  2. 我的格式字符串(%d-%b-%y)或
  3. 其他原因?


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 possiblesici.

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!