Как разделить строку в SQL Server на основе длины строки
Я хочу скопировать мои старые данные в новую БД. у меня есть адресный столбец в моей старой БД с типом данных ntext, но в новой БД я должен использовать 3 столбца для ввода адреса (адрес1, адрес2, адрес3 с типом данных nvarchar(60))
Как я могу разделить строку из моей старой базы данных в мою новую базу данных?
пример: запрос из старой базы данных:
`select address from client`
result :
Jl. Taman Crystal 2 Blok TC 2 No.79 RT.001/018, Cluster Crystal Residence, Summarecon Serpong, Pakulonan Barat - Kelapa Dua
1 ответ
Это действительно зависит от того, сколько данных вам нужно обработать.
Для небольших наборов (скажем, менее 10K или около того) я бы сделал это так:
- Создайте промежуточную таблицу с местом для ключа старого адреса и 3 новых адреса.
- Скопируйте адреса в промежуточную таблицу.
Напишите запрос "извлечения" для разных частей и выполните каждую из них одну за другой. Например, чтобы получить столбец address1, вы можете использовать левую функцию до местоположения,
INSERT INTO STAGE (address1) SELECT LEFT(address,location(address,','))
После того как вы выполнили каждый из этих специальных запросов, вы можете выполнить несколько запросов к результату и убедиться, что вы довольны им. Если у вас есть проблемы, измените ваш запрос и запустите его снова.
Как только вы довольны STAGE, скопируйте его в свой финальный стол.
Для больших наборов я бы написал программу с хорошей проверкой ошибок, отчетами и таблицами исключений и т. Д. Настоящий анализатор и ETL. Не стоит это для небольшого количества данных, которые вы можете посмотреть и работать с ними вручную.