2014-01-23 2 views
2

Я изменяю чужой Java-код, изучая Java, когда я иду. :-). Я пишу hsqldb TEXT-файлы, и мне бы хотелось, чтобы в окончательных файлах была строка заголовка, чтобы их легче было понять как простой текст. Для чтения таких файлов у hsqldb есть переключатель «ignore_first = true», но я не могу найти способ записи строки. Возможно, он не существует, но в документации есть SOAPCE HEADER. Кто-нибудь знает, как его использовать? Вот упрощенный пример того, что я пробовал:Вставка заголовков столбцов в текстовый файл hsqldb

String createtextTable = 
     "CREATE TEXT TABLE MolSet (" + 
      " id INT NOT NULL IDENTITY," + 
      " filename VARCHAR(300)," + 
      " expSolFilename VARCHAR(300)," + 
      " variance DOUBLE" + ");" ; 

    String headingsTable = "id,filename,expSolFilename, variance"; 

    try 
    { 
     stmt = conn.createStatement(); 

     stmt.execute(createtextTable); 
     setTableStmt = "SET TABLE " + “MolSet” + " SOURCE " + 
      '"' + TABLES[0] + ".csv;ignore_first=true" + '"'; 
     stmt.execute(setTableStmt); 

     headingStmt = "SET TABLE " + “MolSet” + " SOURCE HEADER " + 
      '"' + headingsTable + '"'; 
     stmt.execute(headingStmt); 
    } 
    catch(SQLException sqle) 
    { 
     return false; 
    } 


    return true; 
} 

это дает ошибку SQL: Недопустимая строка исходного текста таблицы в отчете [SET TABLE MolSet SOURCE HEADER]

Я надеюсь, что вы можете помочь, даже если это подтвердить, это невозможно. Спасибо, Джоселин

ответ

0

Строка заголовка источника и источник должны быть заключены в одинарных кавычках:

SET TABLE MolSet SOURCE HEADER 'id,filename,expSolFilename,variance' 

Вы использовали двойные кавычки вместо.

Редактировать: ответ для последней версии. Старые версии с 1.8.x поддерживают это, но могут потребовать двойные кавычки. Количество столбцов в заголовке и таблице должно совпадать. Кроме того, вы можете редактировать источник текста, когда база данных находится в автономном режиме, и добавлять заголовки самостоятельно.

+0

Спасибо, попробовал перейти на одинарные кавычки - получил то же сообщение об ошибке. В обсуждении на sourceforge.net/p/hsqldb/discussion/73674/thread/4a01f5f9, где кто-то задал аналогичный вопрос (без удовлетворительного ответа), ответы использовали двойные кавычки. Jocelyn – user3226246

+0

Две недели с тех пор, как я спросил, и единственный ответ не соответствует действительности. Думаю, это означает, что это невозможно. Или, возможно, мне нужно установить последний hsqldb, а не тот, который был упакован с моей программой, но у него есть свои проблемы. – user3226246

+0

Добавлена ​​информация для ответа. – fredt

0

Этот файл SQL работает для создания текстовых файлов CSV из таблицы, а также устанавливает заголовки полей. Он специфичен для HSQLDB (версия 1.8.1.3).

Сайт для DL базы данных и документации является HSQLDB.ORG

Я надеюсь, что это помогает.

-- ======================== 
-- MAKE TABLE TEXT_TABLE_01 
-- ======================== 

DROP TABLE TEXT_TABLE_01 IF EXISTS; 

CREATE TEXT TABLE TEXT_TABLE_01 
    (ID_NUMBER INTEGER 
    , FIRST_NAME VARCHAR(30) 
    , LAST_NAME VARCHAR(30) 
    , DEAR_  VARCHAR(50) 
    ) 
; 

SET TABLE TEXT_TABLE_01 SOURCE "TEXT_TABLE_01.TXT;ignore_first=true;fs=:"; 
SET TABLE TEXT_TABLE_01 SOURCE HEADER "ID_NUMBER:FIRST_NAME:LAST_NAME:DEAR_"; 


INSERT INTO TEXT_TABLE_01 
     (ID_NUMBER, FIRST_NAME, LAST_NAME, DEAR_) 
    SELECT 
      ID_NUMBER, FIRST_NAME, SURNAME, DEAR_ 
    FROM 
     TMP_NON_PERSONAL 
; 

SELECT * FROM TEXT_TABLE_01; 

SET TABLE TEXT_TABLE_01 SOURCE OFF; 

-- DELETE ALL TEXT FILES WHEN FINISHED ... OR BEFORE STARTING ... 
Смежные вопросы