Пичальбяда: SQL Express x64 2017 + BULK INSERT дает бредовую ошибку
От: senglory  
Дата: 09.05.20 13:53
Оценка:
Создаю таблицу:

CREATE TABLE [dbo].[EvAlaska]
(
    [EvID] BIGINT NOT NULL PRIMARY KEY IDENTITY, 
    [GeoID] VARCHAR(10) NOT NULL, 
    [Year] smallint NOT NULL, 
    [LocationName] VARCHAR(40) NULL, 
    [ParentLocation] VARCHAR(40) NULL, 
    [Population] int NULL, 
    [PovertyRate] decimal(7,2) NULL, 
    [RenterOccupiedHouseholds] int NULL, 
    [PctRenterOccupied] decimal(4,2) NULL, 
    [MedianGrossRent] int NULL, 
    [MedianHouseholdIncome] int NULL, 
    [MedianPropertyValue] int NULL, 
    [RentBurden] decimal(3,1) NULL, 
    [PctWhite] decimal(4,2) NULL, 
    [PctAfAm] decimal(4,2) NULL, 
    [PctHispanic] decimal(4,2) NULL, 
    PctAmInd decimal(3,1) NULL, 
    PctAsian decimal(3,1) NULL, 
    PctNhPi decimal(3,1) NULL, 
    PctMultiple decimal(3,1) NULL, 
    PctOther decimal(3,1) NULL, 
    [EvictionFilings] int NULL, 
    [Evictions] int NULL, 
    [EvictionRate] decimal(3,1) NULL, 
    [EvictionFilingRate] decimal(3,1) NULL, 
    [LowFlag] bit NULL, 
    [Imputed] bit NULL, 
    [Subbed] bit NULL
)




Скачиваю CSV файл

curl https://eviction-lab-data-downloads.s3.amazonaws.com/AK/all.csv -o AK.csv


Теперь пытаюсь его импортнуть в таблицу.

BULK INSERT EvAlaska
FROM 'C:\tmp\AK.csv'
WITH
(
    FIRSTROW = 2,
    FORMAT = 'CSV', 
    DATAFILETYPE = 'char',
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '0x0a',
    ERRORFILE = 'C:\tmp\AK-err.csv'
    ,TABLOCK
)


Опа — сразу получаю:

Msg 7301, Level 16, State 2, Line 45
Cannot obtain the required interface ("IID_IColumnsInfo") from OLE DB provider "BULK" for linked server "(null)".


Это что, это куда, это о чем?
Re: Пичальбяда: SQL Express x64 2017 + BULK INSERT дает бредовую ошибку
От: BlackEric http://black-eric.lj.ru
Дата: 09.05.20 17:44
Оценка:
Здравствуйте, senglory, Вы писали:

У вас не совпадает число полей в файле и в таблице. Уберите [EvID], потом его добавите.
https://github.com/BlackEric001
Re[2]: Пичальбяда: SQL Express x64 2017 + BULK INSERT дает бредовую ошибку
От: senglory  
Дата: 09.05.20 19:01
Оценка:
Здравствуйте, BlackEric, Вы писали:

BE>Здравствуйте, senglory, Вы писали:


BE>У вас не совпадает число полей в файле и в таблице. Уберите [EvID], потом его добавите.


А можно как-то для BULK INSERT указать соответствие полей?
Re[3]: Пичальбяда: SQL Express x64 2017 + BULK INSERT дает бредовую ошибку
От: BlackEric http://black-eric.lj.ru
Дата: 09.05.20 20:46
Оценка:
Здравствуйте, senglory, Вы писали:

S>А можно как-то для BULK INSERT указать соответствие полей?


Кажется нет.
Ключ потом добавить просто:
ALTER TABLE dbo.YourTable
   ADD ID INT IDENTITY



Можно же и по другому импортировать.
https://github.com/BlackEric001
Re: Пичальбяда: SQL Express x64 2017 + BULK INSERT дает бредовую ошибку
От: Sinclair Россия https://github.com/evilguest/
Дата: 10.05.20 11:38
Оценка:
Здравствуйте, senglory, Вы писали:

S>Это что, это куда, это о чем?

У него трудности с интерпретацией колонок. Для начала, попробуйте убрать FORMAT='CSV'.
BULK INSERT EvAlaska
FROM 'C:\tmp\AK.csv'
WITH
(
    FIRSTROW = 2,
 --   FORMAT = 'CSV', 
    DATAFILETYPE = 'char',
    FIELDTERMINATOR = ',',
    ROWTERMINATOR = '0x0a',
    ERRORFILE = 'C:\tmp\AK-err.csv'
    ,TABLOCK
)
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.