Импорт CSV файла в SQL Server Management Studio - нет доступных таблиц
Я пытаюсь импортировать файл csv для вставки данных в существующую таблицу в моей базе данных. Я просматриваю мастер, и когда дело доходит до выбора исходных таблиц и представлений для адресата, их нет на выбор. Он просто думает, что я пытаюсь создать новую таблицу.
Любые предложения? Спасибо!
Ответы
Ответ 1
Пропустите мастер и используйте только BULK INSERT
, вот пример:
BULK
INSERT CSVTest
FROM 'c:\csvtest.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
Полный пример: SQL SERVER - импорт файла CSV в SQL Server с использованием массовой загрузки - загрузка файла с разделителями-запятыми в SQL Server
Ответ 2
Кирилл ответ по правильному пути. Однако настоящее CSV-совместимое решение существует с тех пор, как SQL Server 2017
(14.x) CTP 1.1.
Используйте это
BULK INSERT destinationtable
FROM 'filepath'
WITH
(
FORMAT = 'CSV'
)
GO
Хотя есть проблема. Если ваши данные используют NULL
для обозначения нулей, вам нужно удалить их, поскольку MSSQLSMS не примет NULL
в качестве допустимого значения NULL. Выполните поиск/замену ,NULL
на ,
.
Например (4 столбца):
1,NULL,test,"Escaped text with comma, this works"
должен быть отформатирован так:
1,,test,"Escaped text with comma, this works"
См. SQL не вставит нулевые значения с помощью BULK INSERT для получения информации о проблемах вставки NULL.
Вы можете перейти к https://docs.microsoft.com/en-us/sql/t-sql/statements/bulk-insert-transact-sql?view=sql-server-2017 для получения дополнительной информации.
Ответ 3
У нас есть несколько вариантов:
- с помощью мастера dts
- с помощью программирования
знать путь dts или код в С# пройти через него
http://sqlcopy.blogspot.in/2012/07/bulk-sql-to-sql-sql-to-csv-csv-to-sql.html (мертвая ссылка)