Я выполняю импорт объемных данных в файлах CSV. В CSV-файлах мой столбец «Дата» содержит дату в формате «YYYYDDMMHHMM» (например, 200603010929).Преобразование VARCHAR в SMALLDATETIME как часть инструкции UPDATE
Как можно заметить, если я выбираю «smalldatetime» при создании таблицы, импорт данных потерпит неудачу с этой ошибкой:
Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 2, column 2 (Date).
Как я понимаю, для того, чтобы работать дата должна быть определенный формат для работы.
Поэтому одна идея заключается в том, чтобы импортировать значения даты в поле типа VARCHAR, а затем, когда импорт завершен, я хочу выполнить UPDATE для каждой строки, чтобы преобразовать дату в smalldatetime. Это продлит процесс импорта, но я думаю, что было бы намного проще и намного быстрее, чем пытаться найти и заменить данные CSV (это огромный набор данных).
Итак, мой вопрос: 1) Возможно ли это? 2) Как его реализовать?
Это то, что я до сих пор:
UPDATE NYSE
SET [date]=CONVERT(smalldatetime, [date])
Это не удается, так как текст не в нужном формате. Можно ли указать формат строки внутри функции CONVERT, или есть ли другой способ?
Я ценю все комментарии. Благодарю.
Является ли это на самом деле YYYYDDMM и не YYyyMmDd? Итак, 20060301 - 3 января, а не 1 марта? –
Да, это определенно YYYYDDMMHHMM, 3 января. У меня есть отдельный набор данных, который находится в формате YYYDDMM (без времени) и успешно импортируется в таблицу с типом данных DATE SQL. Это тот, который включает время, в которое я испытываю трудности. –
Вы уверены, что YYYYDDMM без времени импортируется правильно? Вероятно, они заменяют значения D и M ... –