У меня есть несколько баз данных Access с более чем 40000000 строк. Я читаю каждую строку с помощью Data Reader и вставляю каждую строку одну за другой в базу данных SQL. Но, похоже, на это уйдут недели, а то и больше!

Есть ли способ сделать эту миграцию быстрее?

1
Inside Man 24 Июн 2016 в 10:36
1
Экспорт в CSV и загрузка с помощью BCP (любая версия MS SQL). ЗАГРУЗИТЬ ДАННЫЕ (MySql) dev.mysql.com/doc/refman /5.7/en/load-data.html
 – 
Serg
24 Июн 2016 в 10:47
1
Вы можете разработать небольшую утилиту для импорта данных из Excel в sql. Скопируйте все записи, которые есть в файле доступа, в файл Excel и выполните операции импорта с помощью этой утилиты.
 – 
Rahul Hendawe
24 Июн 2016 в 11:34

1 ответ

Лучший ответ

Я бы порекомендовал экспортировать вашу базу данных доступа в файлы CSV (или несколько файлов CSV), руководство находится здесь: https://support.spatialkey.com/export-data-from-database-to-csv-file/

Затем вы можете использовать массовый импорт или SSIS для импорта строк в SQL Server. Ссылка на эту операцию будет: http://blog.sqlauthority.com/2008/02/06/sql-server-import-csv-file-into-sql-server-using-bulk- вставить-загрузить-файл-с разделителями-запятыми в-sql-server /

Этот способ должен быть значительно быстрее.

Программной альтернативой было бы использование класса SQLBulkCopy; https: // msdn. microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy(v=vs.110).aspx

2
Milney 24 Июн 2016 в 11:54
Я использовал массовую вставку из файла CSV, но, похоже, он не поддерживает символы Unicode, такие как арабские.
 – 
Inside Man
24 Июн 2016 в 16:42
Какой метод массовой вставки вы используете? Возможно, эта страница прольет свет на эту страницу: msdn.microsoft.com/en-GB/ библиотека / ms188289.aspx
 – 
Milney
24 Июн 2016 в 16:43
По-прежнему не поддерживает арабские символы :( Я использовал метод в вашей второй ссылке в ответе. Я также добавляю DATAFILETYPE = 'widechar' к методу, но безуспешно !.
 – 
Inside Man
24 Июн 2016 в 17:06
Когда вы говорите, что ничего не вышло, что именно вы имеете в виду? Вы получаете сообщение об ошибке? Если да, то какая ошибка? Или они просто неправильно отображаются?
 – 
Milney
24 Июн 2016 в 17:15
Они просто некорректно отображаются. Но я исправил их, добавив CODEPAGE = 'ACP' в метод вставки. Спасибо, Милни. Теперь все отлично и ультра БЫСТРО;)
 – 
Inside Man
24 Июн 2016 в 17:27