Создайте таблицу TEMPORARY, используя Insert Openrowset из CSV файла с XML файлом формата Bulk

77
9

Microsoft Tech Page говорит, что вы можете сделать следующее, чтобы импортировать из. CSV файла в физическую таблицу образцов, используя файл формата. У меня это работает.

Использование провайдера Bulk Rowset OPENROWSET

В следующем примере используется INSERT... SELECT * FROM OPENROWSET (BULK...) для массового импорта данных из файла данных myTestFormatFiles-c.Dat в таблицу HumanResources.myTestFormatFiles в базе данных примеров AdventureWorks. В этом примере используется файл формата XML MyTestFormatFiles.Xml. В примере удаляются все существующие строки таблицы перед импортом файла данных. В редакторе запросов SQL Server Management Studio выполните:

USE AdventureWorks2012;
DELETE myTestFormatFiles;
GO
INSERT INTO myTestFormatFiles
SELECT *
FROM OPENROWSET(BULK 'C:\myTestFormatFiles-c.Dat',
FORMATFILE='C:\myTestFormatFiles.Xml'
) as t1 ;
GO
SELECT * FROM myTestFormatFiles;
GO
-- When you finish using the sample table, you can drop it using the following statement:
DROP TABLE myTestFormatFiles

Однако я хочу сделать именно это, но импортирую во временную # таблицу, которая еще не существует (аналогично тому, как можно создать новую таблицу с предложением select). Это возможно, а если нет, почему бы и нет?

Adjunct Question: Можете ли вы использовать select для создания временной таблицы? Я знаю, что вы можете использовать select для создания таблицы.

Теперь я могу использовать импортный OPENROWSET с еще не существующей временной таблицей для создания таблицы и импорта в нее:

   INSERT INTO #TestFormatFiles
SELECT *
FROM OPENROWSET(BULK 'C:\myTestFormatFiles-c.Dat',
FORMATFILE='C:\myTestFormatFiles.Xml'
) as t1 ;
GO

Тестирование говорит мне нет: Invalid Object name #TestFormatFiles

Но есть ли способ, не создавая таблицу temp из существующей таблицы?

спросил(а) 2021-01-25T23:43:24+03:00 5 месяцев назад
1
Решение
63

Да: Вместо этого используйте SELECT * INTO #TestFormatFiles FROM OPENROWSET...

(У вас почти было: вы просто не можете INSERT INTO таблицу, которая не существует.)

ответил(а) 2021-01-25T23:43:24+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема