Мы используем OLE Automation Object писать в CSV:
DECLARE @Var as xml --or nvarchar(max)
SELECT @Var= --some content yoy want to write in file
DECLARE @FSO int
DECLARE @hr int
DECLARE @src varchar(255)
DECLARE @desc varchar(255)
DECLARE @oFile int
DECLARE @filename nvarchar(max)='D:\Reports\our.csv';
-- Create OLE Automation Object
EXEC @hr = sp_OACreate 'Scripting.FileSystemObject', @FSO OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @FSO, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), [email protected], [email protected]
RETURN
END
-- Create the file
EXEC @hr = sp_OAMethod @FSO, 'CreateTextFile', @oFile OUT, @filename, 8 , True
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @FSO, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), [email protected], [email protected]
RETURN
END
--Here we put content in file
EXEC @hr = sp_OAMethod @oFile, 'Write', NULL, @Var
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @FSO, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), [email protected], [email protected]
RETURN
END
-- Clear used objects
EXEC @hr = sp_OADestroy @FSO
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @FSO, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), [email protected], [email protected]
RETURN
END
EXEC @hr = sp_OADestroy @oFile
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @oFile, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), [email protected], [email protected]
RETURN
END
Так что вам просто нужно положить все таблицы в @Var
или написать while
цикл с приемом каждой строки и поместив его в файл, или. .. все что пожелаете.
Чтобы загрузить CSV-данные на сервере вы можете использовать:
INSERT INTO dbo.YourTable
SELECT a.* FROM OPENROWSET(BULK 'D:\our.csv', FORMATFILE = 'D:\our.fmt') AS a;
Образец our.fmt (это файл, который описывает поля в формате CSV)
9.0
4
1 SQLCHAR 0 50 ";" 1 Field1 SQL_Latin1_General_Cp437_BIN
2 SQLCHAR 0 50 ";" 2 Field2 SQL_Latin1_General_Cp437_BIN
3 SQLCHAR 0 50 ";" 3 Field3 SQL_Latin1_General_Cp437_BIN
4 SQLCHAR 0 500 "\r\n" 4 Field4 SQL_Latin1_General_Cp437_BIN
Вы можете найти описание * .fmt here.
Это то, что я искал – rimboche