Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Турист Member Откуда: Сообщений: 506 |
Здравствуйте. Вопрос по загрузке данных из csv с использованием bulk insert Есть csv с разделителем полей: | field1|field2|field3 aaa|"bbb|ccc"|ddd kkk|xxx|"yyy|zzz" как загрузить данные в таблицу: field1 field2 field3 ----------------------------- aaa bbb|ccc ddd kkk xxx yyy|zzz пробовал с файлом формата - не получилось |
7 ноя 19, 14:33 [22011551] Ответить | Цитировать Сообщить модератору |
a_voronin Member Откуда: Москва Сообщений: 4805 |
Турист, Так давайте файл формата в студию и тексты ошибок |
7 ноя 19, 15:00 [22011593] Ответить | Цитировать Сообщить модератору |
Турист Member Откуда: Сообщений: 506 |
попытался такой файл формата9.0 5 1 SQLCHAR 0 1 "" 0 ExtraField "" 2 SQLCHAR 0 100 "\"|\"" 1 field1 SQL_Latin1_General_CP1_CI_AS 3 SQLCHAR 0 100 "\"|\"" 2 field2 SQL_Latin1_General_CP1_CI_AS 4 SQLCHAR 0 100 "\"" 3 field3 SQL_Latin1_General_CP1_CI_AS 5 SQLCHAR 0 1 "\r\n" 0 ExtraField "" ошибка The bulk load failed. The column is too long in the data file for row 1, column 2. Verify that the field terminator and row terminator are specified correctly. Cannot obtain the required interface ("IID_IColumnsInfo") from OLE DB provider "BULK" for linked server "(null)". |
7 ноя 19, 15:23 [22011610] Ответить | Цитировать Сообщить модератору |
aleks222 Member Откуда: Сообщений: 1244 |
Этот бред BCP не переварит. |
||||
7 ноя 19, 20:29 [22011907] Ответить | Цитировать Сообщить модератору |
L_argo Member Откуда: Сообщений: 1406 |
МС давно оторвалась от нужд реального мира и витает где-то в индусских облаках. пысы: не даром мой знакомый ушел из МС (Редмонт). Индусы нереально запарили. :) |
||
7 ноя 19, 22:35 [22011959] Ответить | Цитировать Сообщить модератору |
HandKot Member Откуда: Sergiev Posad Сообщений: 3019 |
BULK INSERT dbo.test FROM 'test.txt' WITH ( FORMAT = 'CSV' , FIELDTERMINATOR = '|' ) select * from dbo.test
|
||||||||||||||
8 ноя 19, 12:36 [22012239] Ответить | Цитировать Сообщить модератору |
env Member Откуда: Россия, Москва Сообщений: 7439 |
Турист, Замените вложенный разделитель, c:\test>cat tourist.txt a|b|"c|d"|e f|g|h|"i|j" c:\test> sed -r -e 's/"([^|]+)(\|)([^"]+)"/\1#DEADBEEF#\3/g' tourist.txt a|b|c#DEADBEEF#d|e f|g|h|i#DEADBEEF#j Или грузите через визуальную приблуду Import adn Export Data Wizard, она этот формат сожрёт. |
8 ноя 19, 12:38 [22012240] Ответить | Цитировать Сообщить модератору |
Турист Member Откуда: Сообщений: 506 |
HandKot,
не пойдёт на sql server 2014 |
||
8 ноя 19, 13:57 [22012330] Ответить | Цитировать Сообщить модератору |
a_voronin Member Откуда: Москва Сообщений: 4805 |
Турист, SSIS пробовали? |
11 ноя 19, 14:29 [22013591] Ответить | Цитировать Сообщить модератору |
HandKot Member Откуда: Sergiev Posad Сообщений: 3019 |
Тогда выбор не такой и большой: 1. Обновится до 17 2. SSIS, правда не пробовал, но, видать, можно 3. Вставляйте сперва в один столбец, а потом сплите средствами SQL |
||||
13 ноя 19, 07:27 [22014943] Ответить | Цитировать Сообщить модератору |
a_voronin Member Откуда: Москва Сообщений: 4805 |
HandKot, SSIS умеет это давно. Я делал переносы в районе 2011 года. Ни с какими скриптами морочиться не надо. |
13 ноя 19, 15:22 [22015503] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |