Oracle SQL Developer Mac OS не может выполнять массовую вставку в базу данных SQL-сервера

Я пытаюсь импортировать набор плоских файлов в базу данных SQL-сервера. Я скачал и установил Oracle SQL Developer для Mac OS. Я установил правильный плагин и могу нормально подключаться к базе данных, создавать таблицы и выполнять запросы. Проблема в том, что я пытаюсь использовать массовую вставку для импорта некоторых файлов с разделителями табуляции в базу данных. Дело в том, что объемная вставка, похоже, не работает. Код массовой вставки выглядит следующим образом

BULK INSERT sessions
FROM '/.../sessions.txt'
WITH (FIELDTERMINATOR='\t',ROWTERMINATOR='\n')

Это журнал ошибок, который я получаю

Error starting at line 1 in command:
BULK INSERT sessions
Error at Command Line:1 Column:0
Error report:
SQL Error: Incorrect syntax near 'sessions'.
Error starting at line 2 in command:
FROM '/..../sessions.txt'
Error at Command Line:2 Column:0
Error report:
SQL Error: Incorrect syntax near the keyword 'FROM'.
Error starting at line 3 in command:
WITH (FIELDTERMINATOR='\t',ROWTERMINATOR='\n')
Error at Command Line:3 Column:0
Error report:
SQL Error: Incorrect syntax near '('.

person user1261046    schedule 09.07.2012    source источник


Ответы (2)


BULK INSERT — это оператор, выполняемый на сервере SQL. Используемые имена файлов интерпретируются в контексте экземпляра SQL Server, развернутого в NT. '/.../sessions.txt' не является допустимым именем файла NT, NT использует \ в качестве разделителя каталогов в именах полных путей к файлам.

person Remus Rusanu    schedule 09.07.2012
comment
Пробовал. Все еще не работает. Может ли это быть как-то связано с форматом имени пути в Mac OS (без имени диска в начале пути)? Если да, то есть ли способ обойти это? - person user1261046; 09.07.2012
comment
Путь должен быть файлом на хосте SQL Server (включая имя файла UNC при наличии надлежащих прав доступа к сети), а не файлом на вашем Mac. - person Remus Rusanu; 09.07.2012
comment
Что, если SQL-сервер является экземпляром Amazon RDS? - person user1261046; 09.07.2012
comment
Имя должно быть файлом на хост-сервере Amazon RDS. Вместо этого следует использовать инструмент, который выполняет массовое копирование из файла клиента, например bcp.exe . Если вы не можете запустить bcp.exe на своем Mac-клиенте, соответствующий API — это внутренние функции bcp TDS. Удачного кодирования! - person Remus Rusanu; 09.07.2012

Попробуйте 0x0a в качестве конца строки:

BULK INSERT sessions
FROM '/.../sessions.txt'
WITH (FIELDTERMINATOR='\t', ROWTERMINATOR='0x0a')
person Deqing    schedule 09.05.2017