Импорт файлов из Unix в MS SQL Server - PullRequest
0 голосов
/ 10 января 2019

Нам необходимо скопировать большие объемы данных (около 1 ГБ) из базы данных Oracle на сервере UNIX в таблицы в MS SQL Server 2008 r2 (работающие на сервере Windows). Это задание будет повторяться регулярно, а не разово.

У нас есть код для экспорта данных в текстовые файлы, но файлы создаются на сервере UNIX.

У нас есть код для импорта текстовых файлов (массовая вставка), но кажется, что он работает только тогда, когда файлы находятся на сервере Windows (для массовой вставки требуется UNC).

Физическое копирование файлов требует значительных ресурсов. Было бы гораздо лучше написать их один раз и прочитать их один раз.

Какой лучший способ сделать это? Есть ли способ для Oracle, чтобы записать файлы в сетевую папку Windows? Есть ли способ для MS SQL Server 2008 r2 для чтения текстовых файлов с сервера UNIX? Есть ли другой метод полностью?

1 Ответ

0 голосов
/ 11 января 2019

Есть ли способ для Oracle записать файлы в сетевую папку Windows? Есть ли способ для MS SQL Server 2008 r2 читать текстовые файлы с сервера UNIX?

Да, это называется Самба .

Есть ли другой метод целиком?

Создать a связанный сервер . Это позволит вашему SQL Server запрашивать сервер Oracle и извлекать данные, не сохраняя их вообще в файлах.

Чтобы создать связанный сервер, вы должны установить Oracle Data Access Components на SQL Server. Затем необходимо настроить поставщик Oracle OleDB для запуска внутри процесса SQL Server и для принятия параметров:

exec master.dbo.sp_MSset_oledb_prop 'ORAOLEDB.Oracle', N'AllowInProcess', 1 
exec master.dbo.sp_MSset_oledb_prop 'ORAOLEDB.Oracle', N'DynamicParameters', 1 

Затем создайте определение связанного сервера:

exec sp_addlinkedserver N'MyOracle', 'Oracle', 'ORAOLEDB.Oracle', N'//1.2.3.4/xe', N'FetchSize=2000', ''
exec master.dbo.sp_serveroption @server=N'MyOracle', @optname=N'rpc out', @optvalue=N'true'
exec sp_addlinkedsrvlogin @rmtsrvname='MyOracle', @useself=N'FALSE', @rmtuser=N'system', @rmtpassword='xxxxxx' 

И если все настроено правильно, вы можете напрямую запросить сервер Oracle:

exec ('select 1 a from dual') at MyOracle
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...