SqlBulkCopy от CSV до SQL с возможностью обработки данных - PullRequest
1 голос
/ 24 мая 2010

Я использую SQL Server 2005, VB.NET 2005. Я хочу иметь возможность импортировать очень большой файл Excel в таблицу SQL с именем "XYZ"

Я сделал это, выполнивследующее:
1. Сохраните файл excel как csv. (Используя опцию SaveAs XLCSV)
2. Создайте "ABC" с данными из CSV. (Используя ODBC-соединение и выберите * из команды '*'. csv)
3. скопировать датируемый "ABC" в таблицу базы данных "xyz" (используя sqlBulkCopy.WriteToServer ())

Он работает без ошибок, но когда я проверил свою базу данных, я обнаружил, что этот тип данных для некоторых столбцовбыл изменен, и, следовательно, он не скопировал некоторые записи. Любая помощь будет оценена

Ответы [ 2 ]

0 голосов
/ 09 декабря 2010

В файле schema.ini может быть определено более одного CSV-файла, например:

[customer.csv]
Format=CSVDelimited
CharacterSet=ANSI
ColNameHeader=True
Col1=customerID Long
Col2=customerName Text Width 128
Col3=comments Memo

[order.csv]
Format=CSVDelimited
CharacterSet=ANSI
ColNameHeader=True
Col1=orderID Long
Col2=customerID Long
Col3=orderDate DateTime

[orderDetail.csv]
Format=CSVDelimited
CharacterSet=ANSI
ColNameHeader=True
Col1=orderID Long
Col2=itemID Long
Col3=Quantity Short

Для получения дополнительной информации о schema.ini и поддерживаемых типах данных, посетите http://msdn.microsoft.com/en-us/library/ms709353(VS.85).aspx

0 голосов
/ 24 мая 2010

Я думаю, вам лучше создать целевую таблицу на сервере SQL и использовать T-SQL BULK INSERT для вставки CSV.Типы данных будут явными в вашей таблице.Использование промежуточной базы данных может привести к неправильному типу данных, а также к избыточному копированию данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...