Какой самый быстрый способ настроить SQL Разорвать типы данных? - PullRequest
0 голосов
/ 02 апреля 2020

Мне часто приходится импортировать большие таблицы на SQL сервере, с десятками (иногда более 100) столбцов, которые имеют свои типы данных повсеместно (обычно хранятся в виде строк, нуждающихся в преобразовании).

My Текущий метод - просмотр выборки значений, определение наилучшего типа данных и последующее использование следующих типов для изменения типов данных столбца:

ALTER TABLE staff_mx ALTER COLUMN [First Name] varchar(50) 
ALTER TABLE staff_mx ALTER COLUMN [Preferred Name] varchar(50) 
ALTER TABLE staff_mx ALTER COLUMN [Middle Names] varchar(50)
ALTER TABLE staff_mx ALTER COLUMN [Last Name] varchar(50) 

Однако, когда я делаю это, это происходит 50–100 раз за я каждый раз начинаю думать, есть ли лучший способ сделать это?

Я загружаю плоские файлы с помощью мастера импорта, который часто выдает ошибку, если я указываю типы данных там (обычно странный формат даты, который он не может распознать, который требует предварительной манипуляции, прежде чем его можно будет сохранить как дату) Массовая вставка не возможна из-за моей пользовательской конфигурации, заданной администратором (они не изменят ее).

Возможно, это не будет более быстрым способом, но я подумал, что я спрошу. Спасибо!

1 Ответ

1 голос
/ 02 апреля 2020

Не изменяйте таблицу. Загрузите данные в промежуточную таблицу, затем выполните необходимые преобразования для финальной таблицы:

select convert(varchar(50), [First Name]) as firstName,
       convert(varchar(50), [Preferred Name]) as preferredName,
       . . . 
into real_table
from staging;

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

Вы также можете предварительно определить таблицу и массовую загрузку непосредственно в таблицу. Однако это не дает вам возможности исправить данные, если это необходимо.

...