Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / загрузка из csv с разделителем | и двойными кавычками при помощи bulk insert / 11 сообщений из 11, страница 1 из 1
07.11.2019, 14:33
    #39886232
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка из csv с разделителем | и двойными кавычками при помощи bulk insert
Здравствуйте.

Вопрос по загрузке данных из 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

пробовал с файлом формата - не получилось
...
Рейтинг: 0 / 0
07.11.2019, 15:00
    #39886251
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка из csv с разделителем | и двойными кавычками при помощи bulk insert
Турист,

Так давайте файл формата в студию и тексты ошибок
...
Рейтинг: 0 / 0
07.11.2019, 15:23
    #39886265
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка из csv с разделителем | и двойными кавычками при помощи bulk insert
попытался такой файл формата

Код: sql
1.
2.
3.
4.
5.
6.
7.
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)".
...
Рейтинг: 0 / 0
07.11.2019, 20:29
    #39886487
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка из 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


Этот бред BCP не переварит.
...
Рейтинг: 0 / 0
07.11.2019, 22:35
    #39886513
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка из csv с разделителем | и двойными кавычками при помощи bulk insert
авторЭтот бред BCP не переварит. А тут еще нет дат, бинари, БЛОБов и чисел с в произвольном формате. :)
МС давно оторвалась от нужд реального мира и витает где-то в индусских облаках.

пысы: не даром мой знакомый ушел из МС (Редмонт). Индусы нереально запарили. :)
...
Рейтинг: 0 / 0
08.11.2019, 12:36
    #39886710
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка из csv с разделителем | и двойными кавычками при помощи bulk insert
Турист
Здравствуйте.

Вопрос по загрузке данных из csv с использованием bulk insert



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
BULK INSERT
   dbo.test
      FROM 'test.txt'
     WITH
    (
		FORMAT = 'CSV' 
		, FIELDTERMINATOR = '|' 
	)

	select * from dbo.test



field1field2field3aaabbb|cccdddkkkxxxyyy|zzz
...
Рейтинг: 0 / 0
08.11.2019, 12:38
    #39886711
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка из csv с разделителем | и двойными кавычками при помощи bulk insert
Турист,

Замените вложенный разделитель,
Код: sql
1.
2.
3.
4.
5.
6.
7.
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, она этот формат сожрёт.
...
Рейтинг: 0 / 0
08.11.2019, 13:57
    #39886776
Турист
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка из csv с разделителем | и двойными кавычками при помощи bulk insert
HandKot,
авторFORMAT = 'CSV'

не пойдёт на sql server 2014
...
Рейтинг: 0 / 0
11.11.2019, 14:29
    #39887486
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка из csv с разделителем | и двойными кавычками при помощи bulk insert
Турист,

SSIS пробовали?
...
Рейтинг: 0 / 0
13.11.2019, 07:27
    #39888363
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка из csv с разделителем | и двойными кавычками при помощи bulk insert
Турист

не пойдёт на sql server 2014

Тогда выбор не такой и большой:
1. Обновится до 17
2. SSIS, правда не пробовал, но, видать, можно
3. Вставляйте сперва в один столбец, а потом сплите средствами SQL
...
Рейтинг: 0 / 0
13.11.2019, 15:22
    #39888684
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
загрузка из csv с разделителем | и двойными кавычками при помощи bulk insert
HandKot,

SSIS умеет это давно. Я делал переносы в районе 2011 года. Ни с какими скриптами морочиться не надо.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / загрузка из csv с разделителем | и двойными кавычками при помощи bulk insert / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]