Импорт данных даты из Excel в таблицу с правильным преобразованием формата - PullRequest
0 голосов
/ 05 июня 2018

Я импортирую данные из файлов Excel в базу данных сервера SQL.В Excel поля даты имеют формат мм-дд-гггг.В то время как база данных SQL импортирует ее как гггг-мм-дд, меняя даты на месяцы. Например.в Excel его 01-12-2018, но в SQL он импортирует как 2018-12-01.Следовательно, даты неверны.

Пожалуйста, дайте мне знать, как правильно импортировать его в SQL.Я счастлив импортировать обоими способами: гггг-мм-дд или гггг-дд-мм.Я просто хочу, чтобы он правильно прочитал дату из файла Excel.

Я использую мастер импорта и экспорта.

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Если данные установлены в качестве даты в Excel, вы можете преобразовать их в nvarchar, а затем вернуться к дате следующим образом:

CONVERT(date, convert(nvarchar, [date from excel]), 110);

110 в конце означает, что они будут преобразованы из формата mm-dd-yyyy, так как ваши данные в настоящее время отформатированы в Excel.

Если вы читаете данные из Excel как чистый текст, то будет достаточно преобразовать этот текст в дату:

CONVERT(date, [date from excel], 110);

ЭтоФункция преобразует данные в правильный формат в вашей таблице.

0 голосов
/ 05 июня 2018

Обновленный ответ: ОП, упомянутый в другом комментарии к ответу

В настоящее время я использую мастер импорта для импорта данных.

Для решения проблемыв мастере импорта экспорта.

  1. Выберите Источник плоского файла - я использовал образец файла (sample.csv) с этими данными

    id, даты, текст 1,08-09-2018, «образец» 2,05-09-2019, «больше образца» Choose data step- advanced tab

  2. В разделе «Выберите источник данных» я перешел на вкладку «Дополнительно» и убедился, чтодаты импортируются в виде строки.enter image description here
  3. На шаге Выбор исходной таблицы и представлений перейдите в Редактировать сопоставления> Редактировать SQL, а затем измените запрос на создание таблицы, чтобы иметь дополнительный вычисляемый столбец (скажем, cdates)с определением типа [cdates] as convert(date,[ dates],110).Как вы можете видеть, я добавил это в свой SQL как последний столбец определения.

В случае, если вы не создаете таблицу, а вставляете ее в существующую таблицу.Измените таблицу, чтобы иметь вычисляемый столбец над столбцом даты varchar.

См. Вывод, который я получил enter image description here

Оригинальный ответ: Выследует импортировать даты как nvarchar (10) в таблицу, а затем привести их после того, как они были импортированы.

Обычно структура типа nvarchar используется для всех целей и также называется промежуточными таблицами.В промежуточных таблицах большинство соответствующих полей недоверенных данных имеют тип nvarchar (N), что позволяет успешно импортировать их на SQL-сервер.

После импорта вы должны перенести данные из промежуточных таблиц в нужные таблицы, используя правильно приведенные /преобразованные столбцы в запросе MERGE или UP-SERT.

В вашем случае вам следует использовать явное преобразование, например

CONVERT(date,your_staging_date_column ,110)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...