#sql-server #bulkinsert
#sql-сервер #bulkinsert
Вопрос:
КАК и многие до этого, я попал в ад МАССОВОЙ ВСТАВКИ с файлами SQL Server и CSV. Я пытался следовать в основном всем предыдущим ответам, но безуспешно.
например
'BULK INSERT ' @Table
' FROM ''' @Path @Table '.csv'' WITH (
FIRSTROW = 2, FIELDTERMINATOR = '';'', ROWTERMINATOR = ''rn'', TABLOCK ) '
Хорошо, что я могу создавать CSV-файлы с нуля (я на Windows, но они мне понадобятся и для работы в Linux).
Существует ли безопасный метод кодовая комбинация для создания CSV-файла в Windows, который будет считываться с помощью МАССОВОЙ ВСТАВКИ как в Linux, так и в Windows?
Заранее благодарю вас.
Комментарии:
1. Я бы изменил ROWTERMINATOR с
'' r n''
на''0x0a''
2. Прочитайте, что вы написали. Если бы вы ничего не знали об этом коде, ваших данных, вашей схеме и используемом процессе, смогли бы вы оказать какую-либо помощь? Что означает «не повезло»? Проблема в вашем построении динамического sql? Связано ли это с выполнением вашего динамического sql? Возможно, разрешения для файла со случайным именем, который вы пытаетесь вставить? Может быть, вам следует использовать другой подход — не тот, который основан на выполнении этого из экземпляра сервера, а с клиентской машины?
Ответ №1:
В конце концов, я смог решить эту проблему, используя кодировку ANSI и заменив все ;
на ,
. Код, который я использовал, следующий: 'BULK INSERT ' @Table ' FROM ''' @Path @Table '.csv'' WITH ( FIRSTROW = 2, FIELDTERMINATOR = '','', ROWTERMINATOR = ''n'')'