2016-09-12 3 views
0

Я использую SSIS для импорта файла в SQL Server 2008. Этот файл поставляется в формате .csv для меня через кого-то другого. Я не контролирую экспорт файла.Данные отображаются некорректно при импорте из csv в таблицу SQL Server 2008

При импорте файла в одном поле отображается, например. 01.10111144000000000000000e+009 вместо 1101111440.

Затем я начал открывать его в Блокноте и Excel, и так оно и появилось. Когда я щелкните правой кнопкой мыши по этому столбцу в Excel и выберите «Форматировать ячейки» и установите его в «Общие», он правильно отобразится. Проблема в том, что я не могу сделать это вручную.

Что делать, прежде чем делать массовую вставку из файла, чтобы убедиться, что столбец будет импортирован правильно?

+0

Это вопрос о том, как импортировать данные в SQL Server или какую-либо другую программу (например, «Блокнот», «Excel»)? –

+0

HI там. Речь идет о загрузке его из файла в SQL. Извините, если я не был достаточно ясен. –

+0

Проблема заключается в том, что вы смотрите на то, как данные появляются, когда вы _export_ это что-то вроде «Блокнота», когда ваша реальная проблема заключается в том, что вы импортировали всю соответствующую информацию в SQL. Предполагая, что эти десятичные числа имеют смысл, похоже, что вы, вероятно, успешно получили данные в SQL. Что вы планируете делать в SQL с данными? –

ответ

0

Вы можете использовать приведенный ниже код для импорта данных из CSV в базу данных SQL Server.

DECLARE @filePath VARCHAR (200) 
     ,@basePath VARCHAR(200) = 'C:\Dumps\' 
     ,@Bulk NVARCHAR(MAX); 

-- Get full file path 
SET @filePath = @basePath + 'reportsdump.csv'; 

-- Populate table [#ReportsDumpData] with data from csv. 
SET @Bulk = 'BULK INSERT #ReportsDumpData FROM '''[email protected]+''' WITH ('; 
SET @bulk += 'FIRSTROW = 2, FIELDTERMINATOR = ''";"'' , rowterminator=''\n'')'; 
EXEC(@Bulk); 
0

Радости от необходимости работать с экстрактами других людей. Я загрузил его в таблицу temp (staging). Оттуда я сначала конвертирую его в float, который конвертирую в десятичную (10, 0) и конвертирую в varchar (10). Это работает.

Смежные вопросы