Безопасный способ МАССОВОЙ ВСТАВКИ CSV-файла в SQL SERVER

#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'')'