Ошибка преобразования данных массовой загрузки из CSV-файла в SQL

У меня возникла проблема с вставкой моих данных из файла csv в мою базу данных SQL. Я просто не понимаю, почему возникает ошибка, когда я уже заменил некоторые нежелательные символы. он должен быть в состоянии вставить, но я получил эту ошибку.

«Сообщение 4864, уровень 16, состояние 1, строка 1, ошибка преобразования данных массовой загрузки (несоответствие типов или недопустимый символ для указанной кодовой страницы) для строки 1, столбца 13 (кредитный лимит)».

это моя таблица создания:

CREATE TABLE Customers(
    customerNumber integer NOT NULL,
    customerName varchar(50) NOT NULL,
    customerLastName varchar(50) NOT NULL,
    customerFirstName varchar(50) NOT NULL,
    Phone varchar(50) NOT NULL,
    addressLine1 varchar(50) NOT NULL,
    addressLine2 varchar(50) NULL,
    city varchar(50) NOT NULL,
    [state] varchar(50) NULL,
    postalCode varchar(15) NOT NULL,
    country varchar(50) NOT NULL,
    salesRepEmployeeNumber integer NOT NULL,
    creditLimit double precision NOT NULL
    PRIMARY KEY(customerNumber) );

это первые несколько строк моего CSV-файла:

первая линия- 103,Atelier graphique,Schmitt,Carine ,40.32.2555,54 rue Royale,NULL,Nantes,NULL,44000,France,1370,21000

вторая линия - 112, Signal Gift Stores, King, Sue, 7025551838, 8489 Strong St., NULL, Las Vegas, NV, 83030, USA, 1166,71800

Я не уверен, почему возникает ошибка, не могли бы вы мне помочь?


person XuanYi Leon    schedule 10.07.2015    source источник
comment
вы используете mysql или sql-сервер? пожалуйста, не отмечайте оба, если вопрос относится только к одному из них.   -  person CeOnSql    schedule 10.07.2015
comment
Какой инструмент массовой загрузки вы используете - BCP? Какую командную строку и файл определения вы используете?   -  person Ben    schedule 10.07.2015
comment
Не могли бы вы показать свой оператор массовой вставки?   -  person HoneyBadger    schedule 10.07.2015
comment
МАССОВАЯ ВСТАВКА клиентов ИЗ 'C:\Users\Student\Desktop\BIca1folder\CustomersBI.csv' С (fieldterminator=',', rowterminator='/n') @HoneyBadger   -  person XuanYi Leon    schedule 10.07.2015
comment
я использую свой SQL @CeOnSql   -  person XuanYi Leon    schedule 10.07.2015
comment
Будет ли работать, если убрать точки в цифрах? (например: 40.32.2555 --> 40322555). (Не ожидал, но это может иметь значение)   -  person HoneyBadger    schedule 10.07.2015
comment
Кроме того, почему вы используете поплавок (который имеет двойную точность) для кредитного лимита? Не лучше ли десятичной? Поплавок является приблизительным, я бы не подумал, что вам понадобится это для кредитного лимита.   -  person HoneyBadger    schedule 10.07.2015
comment
нет, это не работает. я пытался изменить разделители и даже пробовал и ошибался в типе (я пробовал «деньги НЕ НУЛЕВЫЕ»), я, кажется, всегда был в этой строке 1, столбце 13 (кредитный лимит). @HoneyBadger   -  person XuanYi Leon    schedule 10.07.2015
comment
Есть ли скрытые символы? Вы сами создали csv? Вы можете проверить в шестнадцатеричном редакторе, есть ли где-то, например, окончания строк, которые вызывают проблемы.   -  person HoneyBadger    schedule 10.07.2015
comment
CSV-файл, который я взял отсюда (это мой школьный проект): dropbox .com/s/akdv45z23oy7npa/Customers.csv?dl=0 я пробовал десятичный, но все еще не могу D: @HoneyBadger   -  person XuanYi Leon    schedule 10.07.2015
comment
В вашем файле данных есть несоответствие: какой десятичный разделитель вы используете, точку или запятую? Есть 40.32.2555, которые предполагают использование запятых, но последнее поле, вызывающее проблемы, имеет точку: 21000.00. Если вы измените эту последнюю точку на запятую, это должно сработать.   -  person HoneyBadger    schedule 10.07.2015
comment
Если подумать, если вы измените запятую, это не сработает, так как вы используете запятую в качестве разделителя полей. Вам также придется изменить разделитель полей на что-то еще...   -  person HoneyBadger    schedule 10.07.2015
comment
там нет 21000.00? его 21000. если я поставлю запятую, она разобьется на другой столбец, верно? потому что мой полевой терминатор @HoneyBadger.   -  person XuanYi Leon    schedule 10.07.2015
comment
В отправляемом вами файле данных есть 21000.00, см. мой предыдущий комментарий. Поскольку вам нужно сильно отредактировать файл (изменить десятичное число . на или удалить все остальные точки, а также изменить разделитель полей), вам может потребоваться написать некоторые инструменты для предварительной обработки файла.   -  person HoneyBadger    schedule 10.07.2015
comment
Проверьте здесь. Это может решить вашу проблему, связанную с некоторыми проблемами, связанными с SQL-сервером.   -  person AddWeb Solution Pvt Ltd    schedule 10.07.2015
comment
@AddWebSolutionPvtLtd, ссылка, которую вы разместили, предназначена для разницы в датах, здесь проблема не в этом   -  person HoneyBadger    schedule 10.07.2015


Ответы (1)


Я думаю, это потому, что ваш терминатор строки неверен... вы должны использовать \n, а не /n...

person PrfctByDsgn    schedule 10.07.2015