Удалите двойные кавычки из файла CSV при вставке данных в таблицу с помощью массового сбора на сервере sql - PullRequest
0 голосов
/ 08 июля 2020

Я пытаюсь вставить данные из файла .csv (test_abcd.csv), ниже приведены данные файла:

введите описание изображения здесь

Имеет 2 строки и заголовок. ниже представлена ​​структура таблицы: A char (10), B char (10), C char (10), D char (10), E char (10), F char (10), G char (10), H char (10)

ниже - команда массовой вставки:

bulk insert TEST_ABCD
from 'C:\path\TEST_ABCD.csv'
with
    (   datafiletype = 'char',
        fieldterminator = ',',
        rowterminator = '\n',
        formatfile='C:\path\newFormat.fmt',
        firstrow = 2
    );

и ниже - файл формата:

14.0

17 1 SQLCHAR 0 0 "" "0 dummy1 "" 2 SQLCHAR 0 50 "" "1 A" "3 SQLCHAR 0 0", "" 0 dummy2 "" 4 SQLCHAR 0 50 "" "2 B" "5 SQLCHAR 0 0", "" 0 dummy3 "" 6 SQLCHAR 0 50 "" "3 C" "7 SQLCHAR 0 0", "" 0 dummy4 "" 8 SQLCHAR 0 50 "" "4 D" "9 SQLCHAR 0 0", "" 0 dummy5 "" 10 SQLCHAR 0 50 "" "5 E" "11 SQLCHAR 0 0", "" 0 dummy6 "" 12 SQLCHAR 0 50 "" "6 F" "13 SQLCHAR 0 0", "" 0 dummy7 "" 14 SQLCHAR 0 50 "" " 7 G "" 15 SQLCHAR 0 0 "," "0 dummy8" "16 SQLCHAR 0 50" "" 8 H "" 17 SQLCHAR 0 0 "\ r \ n" 0 dummy9 ""

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

A   B   C   D   E   F   G   H

NULL NULL NULL NULL NULL NULL NULL NULL

и если я открою файл test_abcd.csv в блокноте ++, он будет выглядеть, как показано ниже:

A,B,C,D,E,F,G,H

"" "1" "", "" "2" "", "" "3" "", "" "4" "", "" "5" "", "" "6" "", " "" 7 "" "," "" 8 "" "" "" 21 "" "," "" 22 "" "," "" 23 "" "," "" 24 "" "," "" 25 "" "," "" 26 "" "," "" 27 "" "," "" 28 "" ""

Как я могу изменить или обновить свой файл формата, чтобы я мог вставить правильные данные csv в таблицу.

Я использую sql server 2019 Developer Edition

1 Ответ

1 голос
/ 09 июля 2020

SQL В Server 2017 добавлена ​​поддержка файлов CSV и полей в кавычках . Больше нет необходимости в файле форматирования.

Вы можете загрузить CSV-файл с полями, заключенными в двойные кавычки, просто добавив WITH ( FORMAT = 'CSV'):

bulk insert TEST_ABCD
from 'C:\path\TEST_ABCD.csv'
with (  
        FORMAT = 'CSV',
        firstrow = 2
     );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...