|
|
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
Добрый день, уважаемые коллеги! Пожалуйста, помогите в решении следующей задачи. Дан файл с данными в формате CSV. Необходимо импортировать эти данные в таблицу SQL Server. Вот созданная таблица на языке SQL, оператор BULK INSERT, а ниже файл с данными. CREATE TABLE TABLE1 ( [ID_Sales Organization] SMALLINT NOT NULL, ID_Country VARCHAR(10) NOT NULL, ID_Plant SMALLINT NOT NULL, [ID_Sold-to Party] INT NOT NULL, [ID_Ship-to Party] INT NOT NULL, ID_PP VARCHAR(50) NULL, [Calendar Day] DATE NOT NULL, [Billing Document] INT NULL, [Reference Document] INT NULL, [Intercompany Ind] TINYINT NOT NULL, [Inv (CS)] SMALLINT NULL, [Inv (SU)] FLOAT NULL, [Inv (ISV Mkt)] FLOAT NULL, [Inv (M3)] FLOAT NULL, [Inv (USD)] FLOAT NULL, [Inv (PC)] SMALLINT NULL ); BULK INSERT DB1.dbo.TABLE1 FROM 'C:\Users\Кирилл\Downloads\SalesDetail.csv' WITH ( FIELDTERMINATOR=',', ROWTERMINATOR='\r\n' ) GO При запуске этого кода ругается и выдаёт кучу ошибок: Msg 4864, Level 16, State 1, Line 36 Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1, column 1 (ID_Sales Organization). Msg 4864, Level 16, State 1, Line 36 Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 2, column 7 (Calendar Day). Msg 4864, Level 16, State 1, Line 36... И ВСЕ В ТАКОМ ЖЕ ДУХЕ. Пожалуйста, помогите разобраться и правильно решить задачу! Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2016, 17:15:11 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
У вас в первой строке файла стоят имена полей. Их очень трудно преобразовать к типам данных ваших полей Используйте FIRSTROW =first_row Specifies the number of the first row to load. The default is the first row in the specified data file. FIRSTROW is 1-based. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2016, 20:09:24 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
И еще у вас разделитель строк не \r\n, а \r\r\n. Что очень странно, для стандартного CSV ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.04.2016, 20:13:07 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
Glory, спасибо большое! Разобрался! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2016, 02:36:26 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
Некропостинг, ибо жуть тупняк! Файл из двух строчек, не могу прочитать, твоюмать твоюмать твоюмать... Таблица пустая хоть ты тресни! Люди добрые, спасайте идиота Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 19:16:14 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
Это тоже не работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 19:19:14 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
ШыфлФайл из двух строчек, не могу прочитать, твоюмать твоюмать твоюмать..А зачем вы задали опцию "пропустить 2 строчки"? Вот оно и не читает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2017, 20:10:02 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
alexeyvg, Это чтобы шапка не считывалась. Если не задавать начало со второй строчки,вторая строка считывается как первая и запихивает вторую в последнее поле через разделитель. BCP тоже не работает. Почему - не понимаю... Хелп!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 12:19:36 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
Там в шапке 3 названия столбцов, а по факту 4 - последния столбец всегда 0 после него перевод строки, кроме шапки, где нет названия для последнего нулевого столбца шапки. Если добавить строчек с читать без шапки, то считывает нормально, но на 1 строку меньше! Если с шапкой, то запихивает первую строку в шапку Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 12:33:18 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
А ты можешь физически свой файл бинарником в поле пихнуть? Могу поделиться процкой которая из CSV бинарников селекты делает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 12:39:58 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
Cammomile, Я могу сделать всё, что угодно, чтобы исправить ситуацию. После небольшого исследования выяснил, что первая строка пропадает во всех импортах! Прочто на 1000 строк это не так заметно, как на 1. Если есть идеи, с радостью подхвачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 12:43:22 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
Так, версию которая берет из бинарника я куда то засунул, и под рукой нет. Но есть вот такой заход, думаю должно сработать. CSV в таблицу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 12:50:40 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
ШыфлЭто тоже не работает У меня норм сработал. Твою CSV открывал в Notepad++ и копипастил в Студию. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 13:01:33 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. Еще коммент. Мне кажется, я там слегка нарукожопил с способом определения количества столбцов. ПОЭТОМУ под спойлером быстрый патч в котором количество столбцов можно задать руками. Твой изначальный "SalesDetail.CSV" разбирается влёт вот таким вызовом Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 13:13:10 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
ШыфлЕсли есть идеи, с радостью подхвачу.У вас в файле 3 столбца, а в таблице 4 колонки. Удалите колонку из таблицы, и всё будет импортиться правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 13:27:44 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
alexeyvgШыфлЕсли есть идеи, с радостью подхвачу.У вас в файле 3 столбца, а в таблице 4 колонки. Удалите колонку из таблицы, и всё будет импортиться правильно. Неа. Он тогда value;0 пихает в последнюю колонку. Если последняя колонка дата, к примеру, то Код: plaintext 2 Cammomile Спасибо огромное, спасаешь. А то пукан чуть не загорелся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 14:09:12 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
На здоровье! ps Блин, под спойлером тож накосячил, поторопился. Код: sql 1. Впрочем в твоем случае и так сработает :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 14:19:13 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
О, нашел где накосорезил с определением количества столбцов Код: sql 1. меняем на Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 14:24:13 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
Cammomile, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 14:38:46 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
Cammomile, Скормил твоей процке CSV на 100 метро. Если не завалится, пойдёт в продакшн :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 14:47:14 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
382314 строк, 42 поля - 27 минут 42 секунды. Не bulk insert, конечно скорости, но удовлетворительно. А главное - правельное колличество строк! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 15:29:34 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
Слушай, а вот не в службу, а в дружбу. Давно хотел проверить влияет ли длина тегов на парсинг на больших объемах. Не мог бы ты в этой процке всяки <col> и <row> поменять на <с> и <r>, соответственно, и прогнать по новой загрузку? Я так подозреваю, что на таких размерах как 40 столбцов на 300 строк, такая замена СИЛЬНО урежет размер XML... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 15:43:30 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
Cammomile, не, пока в продакшн не пойдёт... Msg 9455, Level 16, State 1, Procedure sp_GetDataFromCSV, Line 88 XML parsing: line 1, character 111, illegal qualified name character ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 18:22:40 |
|
||
|
Импорт данных из файла CSV в таблицу SQL Server
|
|||
|---|---|---|---|
|
#18+
Ну незнаю, у меня пашет ок. Скинь мыло, я тебе отправлю последнюю версию, чтоб форум не захламлять. (жаль тут лички нет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2017, 18:42:27 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=175&tid=1690729]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
15ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 185ms |
| total: | 299ms |

| 0 / 0 |
