2012-04-11 2 views
0

Как создать объект STDIN для передачи в качестве параметра для копирования команды для загрузки CSV в БД таблицу и выполнить с JDBC APIвыполнения команды CSV копирования с удаленной машины с JDBC

Пример, который я пытался

DataInputStream in = new DataInputStream(new BufferedInputStream(
       new FileInputStream("C:/Documents and Settings/517037/Desktop/new.csv"))); 

copy temp123 from "+in.read()+" using delimiters '|' 

Но здесь я получаю ошибку.

org.postgresql.util.PSQLException: ошибка синтаксиса в или около «48» Позиция:: ERROR 19

может любой помочь мне в этом

+0

Вы хотите сохранить CSV-файл как данные столбца в таблице DB? – Phani

+0

yes Я хочу загрузить файл csv в столбцы таблицы, используя jdbc – satheesh

+0

, а мой сервер db находится в удаленной машине. – satheesh

ответ

0

Пожалуйста, перейдите по ссылке ниже, как для хранения BLOB или CLOB (двоичные большие объекты). Он содержит полный список примеров для хранения этих типов. Пожалуйста, не забудьте проверить документацию по конкретной базе данных в дополнение к этому.

Storing CLOB or BLOB to DB

1

Вы пробовали вызов copy команды с полным именем файла, как:

copy temp123 from 'C:/Documents and Settings/517037/Desktop/new.csv' using delimiters '|' 

Если это не сработает, то вы можете попробовать код:

copy temp123 from stdin using delimiters '|' 

и затем вызвать ваша Java-программа с перенаправлением stdin:

c:\tmp>java my_import < "C:\Documents and Settings\517037\Desktop\new.csv" 
+0

Да, я пробовал, но это путь локальной файловой системы .... – satheesh

+0

Для команды 'copy' с файлом этот файл должен быть« видимым »на сервере. Если вы можете просто скопировать его в каталог temp, видимый серверу. Если нет, попробуйте отредактированный ответ с перенаправлением stdin. –