2016-07-18 5 views
0

Я импортирую файл csv в mysql, используя данные загрузки. Моя команда данных загрузки указана ниже.значения поля даты неверны при импорте csv в mysql

load data local infile 'D:/mydata.csv' into table mydb.mydata 
fields terminated by ',' 
enclosed by '"' 
lines terminated by '\r\n' 
ignore 1 lines 
(SrNo,SourceFrom,@var_updated,Title,First_Name,Middle_Name,Last_Name,Designation,Company_Name,@var_dob,Office_Mobile_No) 

set updated = str_to_date(@var_updated,'%Y-%m-%d'), dob = str_to_date(@var_dob, '%Y-%m-%d'); 

Я получаю разные значения в своих столбцах «Обновлен» и «ДО». Такие значения различаются в моем CSV-файле.

enter image description hereenter image description here

Первое изображение от MySQL Workbench а другой из CSV.

Кроме того, я использовал формат столбца «office_mobile_no» для «number» в csv. Но его показательный номер такой. enter image description here

Когда я дважды нажимаю на него, то только он показывает реальное число, например, 9875461234. Он импортирует то же самое в mysql. Как получить исходный номер в определенном столбце? Также почему мои импортированные значения даты отличаются от столбцов даты csv?

ответ

1

Пару моментов, которые я могу видеть:

  1. Он смотрит с вашего экрана, как данные в файле CSV для «обновляется» в формате ДМГ, но вы говорите, импорт искать Ymd. Я думаю, что вам нужно изменить

set updated = str_to_date(@var_updated,'%Y-%m-%d')

в

set updated = str_to_date(@var_updated,'%d-%m-%Y') 

И то же самое для области DOB, а также, при условии, ваш CSV имеет, что в том же формате.

  1. Вы сказали Я разместил формат колонки «office_mobile_no» в «number» в csv. CSV - это текстовый формат, он не хранит никакой информации о том, как отображать данные. То, что вы видите, - это то, как Excel решает отображать большие числа по умолчанию. Вы можете изменить это, но ваши изменения не будут сохранены при сохранении в CSV, потому что формат файла CSV не включает такую ​​информацию. Попробуйте открыть файл в Notepad ++ и увидеть реальный формат файла.
+0

Большое спасибо. Что касается пункта 2, могу ли я внести изменения в исходный файл, который находится в Excel, а затем сохранить его как CSV? Как я устанавливаю формат определенного столбца в качестве номера, а затем сохраняю его как csv? будет ли это так? Есть ли другой способ импортировать файл со всеми форматами в mysql, кроме csv? –

+1

Если вы установите формат определенного столбца в Excel, а затем сохраните его как CSV, он не сохранит его, потому что, как я уже сказал выше, CSV не сохраняет информацию о формате. Вам нужно будет изменить базовые данные. Форматирование Excel предназначено только для показа, а не для хранения данных. Я бы предложил вам импортировать его в MySQL так же, как есть. Если вы хотите отобразить его в определенном формате где-то еще, чем написать какой-то код для его форматирования, когда вы показываете его пользователю. Это хороший принцип программирования/хранения данных в целом - сохранить данные в необработанном формате, а затем изменить их отображение в соответствии с каждым вариантом использования – ADyson

+0

Ohk, но как бы я получил исходный номер? Если я импортирую его, как в mysql, а в mobile_no, он покажет номер как «98E + 11», тогда как я получу его исходный номер, который равен 9875461234 в mysql? –