2014-11-21 1 views
0

Я пытаюсь реализовать Fastload Utility с jdbc. Но я продолжаю получать следующую ошибку: Name requires more than 30 bytes in LATIN internal formДля внутреннего имени LATIN требуется более 30 байт?

Я прочитал много статей: эта ошибка возникает при создании таблицы. В моем случае эта ошибка возникает на линии executeBatch(). Вот мой код

Connection conn = DriverManager.getConnection(url, username, password); // I am using TYPE=FASTLOAD 
    // creating table 
    String createStr = 
    "CREATE TABLE dbname.tablename(" + 
" Fname VARCHAR(506) CHARACTER SET UNICODE, " + 
" Lname VARCHAR(507) CHARACTER SET UNICODE " + 
");" 
    Statement createTable = ... 
    createTable.execueQuery("CREATE TABLE ... ") ; 

    PreparedStatement prst = ... ; 


    while (// loop) { 
    prst.addBatch(); 
    } 
    prst.executeBatch(); // Here it throws this error 
    conn.commit(); 

Почему я получаю эту ошибку, когда executeBatch() метод сработает? Что я могу сделать ?

+3

Я думаю, что ответ где-то скрыт в '...' частях, которые вы оставили. – Henry

+0

Yup, нам нужно полное предложение 'CREATE TABLE' – Andrew

+0

Я пробовал набор данных, который имеет 200K строк, и это не удалось. Затем я уменьшил количество строк в одном наборе данных и работал. Как правило, он работает нормально, просто этот набор данных не работает. Кроме того, почему 'executeBatch()' выдавал бы такую ​​ошибку? Все статьи в Интернете говорят, что оператор 'create' выдает эту ошибку, но почему' executeBatch() 'потерпел неудачу в моем случае, но не' create' –

ответ

2

Я считаю, что FastLoad предписывает имена столбцов «F_», поэтому имена столбцов должны быть не более 28 символов. Из документации:

The destination table column names must not exceed 28 characters. 

Вот ссылка на documentation.

+0

О, я вижу. благодаря –

Смежные вопросы