Бөлісу құралы:


Правила преобразования типов данных для dwloader — служба платформы Аналитики (PDW)

В этой статье описываются форматы входных данных и неявные преобразования типов данных, которые загрузчик командной строки поддерживает при загрузке данных в PDW. Неявные преобразования данных происходят, когда входные данные не соответствуют типу данных в целевой таблице SQL Server PDW. Используйте эти сведения при разработке процесса загрузки, чтобы убедиться, что данные будут успешно загружены в SQL Server PDW.

Вставка литерала в двоичные типы

В следующей таблице определены принятые типы литералов, формат и правила преобразования для загрузки литерального значения в столбец PDW типа типа (n) или varbinary(n).

Тип входных данных Примеры входных данных Преобразование в двоичный или тип данных varbinary
Двоичный литерал [0x]hexidecimal_string

Пример: 12Ef или 0x12Ef
Префикс 0x является необязательным.

Длина источника данных не может превышать количество байтов, указанных для типа данных.

Если длина источника данных меньше размера двоичного типа данных, данные заполняются справа от нуля, чтобы достичь размера типа данных.

Вставка литерала в типы даты и времени

Литералы даты и времени представлены с помощью строковых литералов в определенных форматах, заключенных в одинарные кавычки. В следующих таблицах определяются допустимые типы литералов, формат и правила преобразования для загрузки литерала даты или времени в столбец типа datetime, smalldatetime, date, time, datetimeoffset или datetime2. Таблицы определяют формат по умолчанию для заданного типа данных. Другие форматы, которые можно указать, определяются в разделе "Форматы даты и времени". Литералы даты и времени не могут включать начальные или конечные пробелы. значения date, smalldatetime и NULL не могут быть загружены в режиме фиксированной ширины.

Тип данных datetime

В следующей таблице определены формат и правила по умолчанию для загрузки литеральных значений в столбец типа datetime. Пустая строка (') преобразуется в значение по умолчанию "1900-01-01 12:00:00.000". Строки, содержащие только пустые (" ") создают ошибку.

Тип входных данных Примеры входных данных Преобразование в тип данных datetime
Строковый литерал в формате datetime 'yyy-MM-dd hh:mm:ss[.fff]'

Пример: '2007-05-08 12:35:29.123'
Отсутствующие дробные цифры имеют значение 0 при вставке значения. Например, литерал "2007-05-08 12:35" вставляется как "2007-05-08 12:35:00.000".
Строковый литерал в формате smalldatetime 'гггг-ММ-дд чч:мм'

Пример: '2007-05-08 12:35'
Секунды и оставшиеся дробные цифры имеют значение 0 при вставке значения.
Строковый литерал в формате даты 'гггг-ММ-дд'

Пример: '2007-05-08'
Значения времени (час, минуты, секунды и дроби) задаются в значение 12:00:00.000 при вставке значения.
Строковый литерал в формате datetime2 'yyy-MM-dd hh:mm:ss.fffffff'

Пример: '2007-05-08 12:35:29.1234567'
Исходные данные не могут превышать три дробных цифры. Например, будет вставлен литерал "2007-05-08 12:35:29.123", но значение "2007-05-8 12:35:29.1234567" создает ошибку.

Тип данных smalldatetime

В следующей таблице определены формат и правила по умолчанию для загрузки литеральных значений в столбец типа smalldatetime. Пустая строка (') преобразуется в значение по умолчанию "1900-01-01 12:00". Строки, содержащие только пустые (" ") создают ошибку.

Тип входных данных Примеры входных данных Преобразование в тип данных smalldatetime
Строковый литерал в формате smalldatetime 'гггг-ММ-дд чч:мм' или 'гггг-ММ-дд чч:мм:сс'

Пример: "2007-05-08 12:00" или "2007-05-08 12:00:15"
Исходные данные должны иметь значения в течение года, месяца, даты, часа и минуты. Секунды являются необязательными и, если они присутствуют, должны иметь значение 00. Любое другое значение создает ошибку.

Секунды являются необязательными. При загрузке в столбец smalldatetime dwloader округляет секунды и дробные секунды. Например, 1999-01-05 20:10:35.123 будет загружаться как 01-05 20:11.
Строковый литерал в формате даты 'гггг-ММ-дд'

Пример: '2007-05-08'
Значения времени (час, минуты, секунды и дроби) имеют значение 0 при вставке значения.

Тип данных date

В следующей таблице определены формат и правила по умолчанию для загрузки литеральных значений в столбец даты типа. Пустая строка (') преобразуется в значение по умолчанию "1900-01-01". Строки, содержащие только пустые (" ") создают ошибку.

Тип входных данных Примеры входных данных Преобразование в тип данных даты
Строковый литерал в формате даты 'гггг-ММ-дд'

Пример: '2007-05-08'

Тип данных времени

В следующей таблице определены формат и правила по умолчанию для загрузки литеральных значений в столбец времени типа. Пустая строка (') преобразуется в значение по умолчанию "00:00:00.0000". Строки, содержащие только пустые (" ") создают ошибку.

Тип входных данных Примеры входных данных Преобразование в тип данных времени
Строковый литерал в формате времени 'hh:mm:ss.fffffff'

Пример: '12:35:29.1234567'
Если источник данных имеет меньшую или равную точность (число дробных цифр), чем точность типа данных времени , данные будут заполнены справа с нулями. Например, литеральное значение "12:35:29.123" вставляется как "12:35:29.1230000".

Тип данных datetimeoffset

В следующей таблице определены формат и правила по умолчанию для загрузки литеральных значений в столбец типа datetimeoffset (n). Формат по умолчанию — y-MM-dd hh:mm:ss.fff {+|-}hh:mm. Пустая строка (') преобразуется в значение по умолчанию "1900-01-01 12:00:00.0000000 +00:00".. Строки, содержащие только пустые (" ") создают ошибку. Количество дробных цифр зависит от определения столбца. Например, столбец, определенный как datetimeoffset (2), будет иметь две дробные цифры.

Тип входных данных Примеры входных данных Преобразование в тип данных datetimeoffset
Строковый литерал в формате datetime 'yyy-MM-dd hh:mm:ss[.fff]'

Пример: '2007-05-08 12:35:29.123'
Отсутствующие дробные цифры и значения смещения имеют значение 0 при вставке значения. Например, литерал "2007-05-08 12:35:29.123" вставляется как "2007-05-08 12:35:29.123000000 +00:00".
Строковый литерал в формате smalldatetime 'гггг-ММ-дд чч:мм'

Пример: '2007-05-08 12:35'
В секундах остальные дробные цифры и значения смещения имеют значение 0 при вставке значения.
Строковый литерал в формате даты 'гггг-ММ-дд'

Пример: '2007-05-08'
Значения времени (час, минуты, секунды и дроби) имеют значение 0 при вставке значения. Например, литерал "2007-05-08" вставляется как "2007-05-08 00:00:0000000 +000:000".
Строковый литерал в формате datetime2 'yyy-MM-dd hh:mm:ss.fffffff'

Пример: '2007-05-08 12:35:29.1234567'
Исходные данные не могут превышать указанное количество дробных секунд в столбце datetimeoffset. Если источник данных имеет меньшее или равное количество дробных секунд, данные заполняются справа с нулями. Например, если тип данных — datetimeoffset (5), то литеральное значение "2007-05-08 12:35:29.123 +12:15" вставляется как "12:35:29.12300 +12:15".
Строковый литерал в формате datetimeoffset 'yyy-MM-dd hh:mm:ss.fffffff {+|-} hh:mm

Пример: '2007-05-08 12:35:29.1234567 +12:15'
Исходные данные не могут превышать указанное количество дробных секунд в столбце datetimeoffset. Если источник данных имеет меньшее или равное количество дробных секунд, данные заполняются справа с нулями. Например, если тип данных — datetimeoffset (5), то литеральное значение "2007-05-08 12:35:29.123 +12:15" вставляется как "12:35:29.12300 +12:15".

Тип данных datetime2

В следующей таблице определены формат и правила по умолчанию для загрузки литеральных значений в столбец типа datetime2 (n). Формат по умолчанию — yyy-MM-dd hh:mm:ss.fff. Пустая строка (') преобразуется в значение по умолчанию "1900-01-01 12:00:00". Строки, содержащие только пустые (" ") создают ошибку. Количество дробных цифр зависит от определения столбца. Например, столбец, определенный как datetime2 (2), будет иметь две дробные цифры.

Тип входных данных Примеры входных данных Преобразование в тип данных datetime2
Строковый литерал в формате datetime 'yyy-MM-dd hh:mm:ss[.fff]'

Пример: '2007-05-08 12:35:29.123'
Дробные секунды являются необязательными и имеют значение 0 при вставке значения.
Строковый литерал в формате smalldatetime 'гггг-ММ-дд чч:мм'

Пример: '2007-05-08 12'
Необязательные секунды и оставшиеся дробные цифры имеют значение 0 при вставке значения.
Строковый литерал в формате даты 'гггг-ММ-дд'

Пример: '2007-05-08'
Значения времени (час, минуты, секунды и дроби) имеют значение 0 при вставке значения. Например, литерал "2007-05-08" вставляется как "2007-05-08 12:00:00000000".
Строковый литерал в формате datetime2 'yyy-MM-dd hh:mm:ss:fffffffff'

Пример: '2007-05-08 12:35:29.1234567'
Если источник данных содержит данные и компоненты времени, которые меньше или равны значению, указанному в datetime2(n), данные вставляются; в противном случае возникает ошибка.

Форматы DateTime

Dwloader поддерживает следующие форматы данных для входных данных, которые она загружает в SQL Server PDW. Дополнительные сведения перечислены после таблицы.

datetime smalldatetime Дата datetime2 datetimeoffset
[M[M]]M-[d]d-[yy]yy HH:mm:ss[.fff] [M[M]]M-[d]d-[yy]yy HH:mm[:00] [M[M]]M-[d]d-[yy]yy [M[M]]M-[d]d-[yy]yy HH:mm:ss[.fffffff] [M[M]]M-[d]d-[yy]yy HH:mm:ss[.fffffff] zzz
[M[M]]M-[d]d-[yy]yy hh:mm:ss[.fff][tt] [M[M]]M-[d]d-[yy]yy hh:mm[:00][tt] [M[M]]M-[d]d-[yy]yy hh:mm:ss[.fffffff][tt] [M[M]]M-[d]d-[yy]yy hh:mm:ss[.fffffff][tt] zzz
[M[M]]M-[yy]yy-[d]d HH:mm:ss[.fff] [M[M]]M-[yy]yy-[d]d HH:mm[:00] [M[M]]M-[yy]yy-[d]d [M[M]]M-[yy]yy-[d]d HH:mm:ss[.fffffff] [M[M]]M-[yy]yy-[d]d HH:mm:ss[.fffffff] zzz
[M[M]]M-[yy]yy-[d]d hh:mm:ss[.fff][tt] [M[M]]M-[yy]yy-[d]d hh:mm[:00][tt] [M[M]]M-[yy]yy-[d]d hh:mm:ss[.fffffff][tt] [M[M]]M-[yy]yy-[d]d hh:mm:ss[.fffffff][tt] zzz
[yy]yy-[M[M]]M-[d]d HH:mm:ss[.fff] [yy]yy-[M[M]]M-[d]d HH:mm[:00] [yy]yy-[M[M]]M-[d]d [yy]yy-[M[M]]M-[d]d HH:mm:ss[.fffffff] [yy]yy-[M[M]]M-[d]d HH:mm:ss[.fffffff] zzz
[yy]yy-[M[M]]M-[d]d hh:mm:ss[.fff][tt] [yy]yy-[M[M]]M-[d]d hh:mm[:00][tt] [yy]yy-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] [yy]yy-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] zzz
[yy]yy-[d]d-[M[M]]M HH:mm:ss[.fff] [yy]yy-[d]d-[M[M]]M HH:mm[:00] [yy]yy-[d]d-[M[M]]M [yy]yy-[d]d-[M[M]]M HH:mm:ss[.fffffff] [yy]yy-[d]d-[M[M]]M HH:mm:ss[.fffffff] zzz
[yy]yy-[d]d-[M[M]]M hh:mm:ss[.fff][tt] [yy]yy-[d]d-[M[M]]M hh:mm[:00][tt] [yy]yy-[d]d-[M[M]]M hh:mm:ss[.fffffff][tt] [yy]yy-[d]d-[M[M]]M hh:mm:ss[.fffffff][tt] zzz
[d]d-[M[M]]M-[yy]yy HH:mm:ss[.fff] [d]d-[M[M]]M-[yy]yy HH:mm[:00] [d]d-[M[M]]M-[yy]yy [d]d-[M[M]]M-[yy]yy HH:mm:ss[.fffffff] [d]d-[M[M]]M-[yy]yy HH:mm:ss[.fffffff] zzz
[d]d-[M[M]]M-[yy]yy hh:mm:ss[.fff][tt] [d]d-[M[M]]M-[yy]yy hh:mm[:00][tt] [d]d-[M[M]]M-[yy]yy hh:mm:ss[.fffffff][tt] [d]d-[M[M]]M-[yy]yy hh:mm:ss[.fffffff][tt] zzz
[d]d-[yy]yy-[M[M]]M HH:mm:ss[.fff] [d]d-[yy]yy-[M[M]]M HH:mm[:00] [d]d-[yy]yy-[M[M]]M [d]d-[yy]yy-[M[M]]M HH:mm:ss[.fffffff] [d]d-[yy]yy-[M[M]]M HH:mm:ss[.fffffff] zzz
[d]d-[yy]yy-[M[M]]M hh:mm:ss[.fff][tt] [d]d-[yy]yy-[M[M]]M hh:mm[:00][tt] [d]d-[yy]yy-[M[M]]M hh:mm:ss[.fffffff][tt] [d]d-[yy]yy-[M[M]]M hh:mm:ss[.fffffff][tt] zzz

Сведения.

  • Для разделения значений месяца, дня и года можно использовать ", ", " / " или ". '. Для простоты в таблице используется только разделитель "-".

  • Чтобы указать месяц в виде текста, используйте три или более символов. Месяцы с 1 или 2 символами интерпретируются как число.

  • Чтобы разделить значения времени, используйте символ : ' .

  • Буквы в квадратных скобках необязательны.

  • Буквы "tt" назначаем AM|PM|am|pm. По умолчанию используется AM. Если задано значение tt, значение часа (hh) должно находиться в диапазоне от 0 до 12.

  • Буквы zzz определяют смещение часового пояса для текущего часового пояса системы в формате {+|-}HH:ss].

Вставка литерала в числовые типы

В следующих таблицах определяются правила форматирования и преобразования по умолчанию для загрузки литерального значения в столбец SQL Server PDW, использующий числовый тип.

Битовый тип данных

В следующей таблице определены формат и правила по умолчанию для загрузки литеральных значений в столбец бита типа. Пустая строка (') или строка, содержащая только пустые (" ") преобразуется в 0.

Тип входных данных Примеры входных данных Преобразование в тип данных бита
Строковый литерал в целочисленном формате 'ffffffffffff'

Пример: "1" или "321"
Целочисленное значение, отформатируемое как строковый литерал, не может содержать отрицательное значение. Например, значение "-123" создает ошибку.

Значение, превышающее 1, преобразуется в 1. Например, значение "123" преобразуется в 1.
Строковый литерал "TRUE" или "FALSE"

Пример: true
Значение TRUE преобразуется в 1; Значение FALSE преобразуется в 0.
Целочисленный литерал fffffffn

Пример: 1 или 321
Значение больше 1 или меньше 0 преобразуется в 1. Например, значения 123 и -123 преобразуются в 1.
Десятичный литерал fffnn.fffn

Пример: 1234.5678
Значение больше 1 или меньше 0 преобразуется в 1. Например, значения 123.45 и -123.45 преобразуются в 1.

Десятичный тип данных

В следующей таблице определены правила загрузки литеральных значений в столбец десятичного типа (p,s). Правила преобразования данных совпадают с правилами sql Server. Дополнительные сведения см. в разделе "Преобразование типов данных" (ядро СУБД) на сайте MSDN.

Тип входных данных Примеры входных данных
Целочисленный литерал 321312313123
Десятичный литерал 123344.34455

Типы данных float и real

В следующей таблице определены правила загрузки литеральных значений в столбец типа float или real. Правила преобразования данных совпадают с правилами sql Server. Дополнительные сведения см. в разделе "Преобразование типов данных" (ядро СУБД) на сайте MSDN.

Тип входных данных Примеры входных данных
Целочисленный литерал 321312313123
Десятичный литерал 123344.34455
Литерал с плавающей запятой 3.12323E+14

int, bigint, tinyint, smallint data types

В следующей таблице определены правила загрузки литеральных значений в столбец типа int, bigint, tinyint или smallint. Источник данных не может превышать диапазон, допустимый для заданного типа данных. Например, диапазон для tinyint составляет от 0 до 255, а диапазон для int равен -2 147 483 648 до 2 147 483 647.

Тип входных данных Примеры входных данных Преобразование в целые типы данных
Целочисленный литерал 321312313123
Десятичный литерал 123344.34455 Значения справа от десятичной запятой усечены.

Типы данных money и smallmoney

Денежные литеральные значения представлены в виде строки чисел с необязательной десятичной запятой и необязательным символом валюты в виде префикса. Источник данных не может превышать диапазон, допустимый для заданного типа данных. Например, диапазон для небольших денег составляет -214 748,3648 до 214 748,3647, а диапазон для денег составляет -922 337 203 685 477,5808 до 922 337 203 685 477,5807. В следующей таблице определены правила загрузки литеральных значений в столбец типа money или smallmoney.

Тип входных данных Примеры входных данных Преобразование в тип данных money или smallmoney
Целочисленный литерал 321312 Отсутствующие цифры после десятичной запятой имеют значение 0 при вставке значения. Например, литерал 12345 вставляется как 12345,0000
Десятичный литерал 123344.34455 Если число цифр после десятичной запятой превышает 4, значение округляется до ближайшего значения. Например, значение 1233444.34455 вставляется как 1233444.3446.
Деньги литерал $123456.7890 Символ валюты не вставляется со значением.

Если число цифр после десятичной запятой превышает 4, значение округляется до ближайшего значения.

Вставка литерала в типы строк

В следующих таблицах определяются правила форматирования и преобразования по умолчанию для загрузки литерального значения в столбец SQL Server PDW, использующий строковый тип.

char, varchar, nchar и nvarchar data types

В следующей таблице определены формат и правила по умолчанию для загрузки литеральных значений в столбец типа char, varchar, nchar и nvarchar. Длина источника данных не может превышать размер, указанный для типа данных. Если длина источника данных меньше размера типа данных char или nchar , данные заполняются справа с пустыми пробелами, чтобы достичь размера типа данных.

Тип входных данных Примеры входных данных Преобразование в типы данных символов
Строковый литерал Формат: символьная строка

Пример: abc
Неприменимо
Строковый литерал Юникода Формат: N'символьная строка'

Пример: N'abc'
Неприменимо
Целочисленный литерал Формат: ffffffffffffn

Пример: 321312313123
Неприменимо
Десятичный литерал Формат: ff.fffffff

Пример: 12344.34455
Неприменимо
Деньги литерал Формат: $ffffff.fffnn

Пример: $123456.99
Необязательный символ валюты не вставляется со значением. Чтобы вставить символ валюты, вставьте значение в виде строкового литерала. Это будет соответствовать формату загрузчика, который обрабатывает каждый литерал как строковый литерал.

Запятые не допускаются.

Если число цифр после десятичной запятой превышает 2, значение округляется до ближайшего значения. Например, значение 123.946789 вставляется как 123.95.

Только стиль по умолчанию 0 (без запятых и 2 цифры после десятичной запятой) допускается при использовании функции CONVERT для вставки денежных литералы.

Общие замечания

Dwloader выполняет те же неявные преобразования, которые выполняет SMP SQL Server, но не поддерживает все неявные преобразования, поддерживаемые SMP SQL Server.