2011-02-10 4 views
1

У меня есть большой файл Csv, который я хочу загрузить на свой стол. Столбец этого csv-файла хранит даты, но в формате DD-MM-YYYY. Когда я загружаю этот файл в свою таблицу, он его не принимает, поскольку формат DATE MySQL принимает только YYYY-MM-DD. Есть ли способ изменить это в MySQL. Я использую python для создания моих таблиц и для загрузки моего файла в таблицу, что не имеет значения для этой проблемы на самом деле. Если есть команда для этого, скажите мне, где я должен это точно указать? благодаря Это полный кодИзменение формата даты в MySql

import MySQLdb,os 

path='data_files' 
absPath = os.path.abspath(path) 
print absPath 


#connecting to the new database 
conn = MySQLdb.connect(host='localhost', 
          user='root', 
          passwd='', 
          db='iens') 

db_cursor = conn.cursor() 

query = "LOAD DATA LOCAL INFILE '"+ absPath + "/recencies" +"' INTO TABLE iens.recensies FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\r\n' (restaurantID,Naam,Date,RecensieText) " 

db_cursor.execute(query) 

conn.commit() 
+2

Что означает «хочу»? –

+0

Покажите нам свой код, который загружает эти данные в таблицу и имеет проблемы с форматом даты. – eumiro

+0

http://www.thefreedictionary.com/wanna – Hossein

ответ

4

Предполагая, что ваша таблица имеет два столбца с именем column1 и column2, дата в column2 и это второй столбец в файле CSV:

LOAD DATA INFILE 'filename' (column1, @var1) 
SET column2 = STR_TO_DATE(@var1, '%d-%m-%Y') 

(column1, @var1) часть говорит:

  • первый столбец CSV-файла поступает непосредственно в столбец базы данных column1
  • Второй столбец файла CSV переходит в переменную @var1

SET column2 = часть говорит:

  • Установите столбец базы данных column2 к тому, что выходит из выражения после = знака.
+0

Можно ли показать мне, как это сделать на мой собственный код? Спасибо – Hossein

+0

Я добавил несколько объяснений. Надеюсь, это поможет вам разобраться, как применить это к вашему коду. – Oswald

1

MySQL Reference Manual :: Date and Time Functions - см STR_TO_DATE, чтобы преобразовать строку в дату.

+0

Но можете ли вы использовать это в LOAD DATA INFILE? – Mchl

+0

Я действительно так не думаю. Я пытался понять это ... – Hossein

+0

Да. RTM RTM RTM :( –

Смежные вопросы