Import help!

Antava
Дата: 14.11.2003 12:24:11
Подскажите как импортировать в базу из внешнего файла ?
Заранее спасибо!
Konrad
Дата: 14.11.2003 13:02:51
Берешь базу, прям в нее импортируешь из файла.

Поточнее бы вам вопрос сформулировать..
Что за файл? Что содержит - просто данные, разделенные чем-либо, или набор готовых SQL-команд? Результат выполнения pg_dump на другой машине?
Antava
Дата: 14.11.2003 13:23:31
Есть файл с данными разделенные пробелами, нужно из файла закинуть в базу
copy 'name_table' from 'file' delimiters ' '; на это выдает ошибку:

ERROR: copy: line 1, Bad int8 external representation
"1068654573 6 x.x.x.x x 205.188.7.139 x 1 46 eth0"
Konrad
Дата: 14.11.2003 13:50:40
Проверь, нет ли среди самих данных пробелов.
Antava
Дата: 14.11.2003 14:44:00
Пробелов нет,
не могу понять откуда начать копать,
подскажи или я неправильно понимаю (почему он выгребает целую строку?)
может пробел между данными на обозначить по другому?
Konrad
Дата: 14.11.2003 15:09:53
Вообще, если есть возможность, то лучше разделителями делать какой-либо нейтральный символ, редко встречающийся в тексте (данных). Наиболее удобен в качестве разделителя символ конвейра "|".

Поле int8, где возникают проблемы, какое по счету в таблице идет? Выложи описание таблицы и кусок файла (вкл. строку до и после этой), где возникают проблемы.
Antava
Дата: 14.11.2003 15:36:01
таблица создана так:
CREATE TABLE "accounting" (
"seq" BIGSERIAL,
"hostname" VARCHAR(50),
"timestamp" INTEGER,
"protocol" INTEGER,
"src_ip" VARCHAR(15),
"src_port" INTEGER,
"dst_ip" VARCHAR(15),
"dst_port" INTEGER,
"packets" INTEGER,
"bytes" INTEGER,
"in_interface" VARCHAR(10),
"out_interface" VARCHAR(10),
PRIMARY KEY("seq")
) WITHOUT OIDS;

данные из файла:

1068654573 6 192.168.10.73 39576 205.188.7.139 5190 1 46 eth0
1068654583 6 205.188.7.139 5190 192.168.10.73 39576 1 40 eth0

ошибка :

ERROR: copy: line 1, Bad int8 external representation "1068654573 6 192.168.10.73 39576 205.188.7.139 5190 1 46 eth0"
Konrad
Дата: 14.11.2003 15:47:35
Естественно, у тебя это работать не будет

1068654573 -> "seq" BIGSERIAL,
6-> "hostname" VARCHAR(50),
192.168.10.73 -> "timestamp" INTEGER,
39576 -> "protocol" INTEGER,
205.188.7.139 -> "src_ip" VARCHAR(15),
5190 -> "src_port" INTEGER,
1 -> "dst_ip" VARCHAR(15),
46 -> "dst_port" INTEGER,
eth0 -> "packets" INTEGER,
"bytes" INTEGER,
"in_interface" VARCHAR(10),
"out_interface" VARCHAR(10),

Теперь видно? Либо указывай набор атрибутов для таблицы (благо, в версиях 7.3. и позже это делать можно )))), либо приведи данные в файле в порядок, чтобы они соответствовали структуре таблицы. PostgreSQL - не система искусственного интеллекта, а всего-лишь СУБД, пусть и хорошая :)
Antava
Дата: 14.11.2003 16:13:23
сделал вышло теперь так:
таблица CREATE TABLE "acct" (
"timestamp" INTEGER, -> 1068654573
"protocol" INTEGER, -> 6
"src_ip" VARCHAR(15), -> 192.168.10.73
"src_port" INTEGER, -> 39576
"dst_ip" VARCHAR(15), -> 205.188.7.139
"dst_port" INTEGER, -> 5190
"packets" INTEGER, -> 1
"bytes" INTEGER, -> 46
"ip_interface" INTEGER, ->
"out_interface" INTEGER -> eth0
) WITHOUT OIDS;

файл
1068654573 6 192.168.10.73 39576 205.188.7.139 5190 1 46 eth0
1068654583 6 205.188.7.139 5190 192.168.10.73 39576 1 40 eth0


ошибка

ERROR: copy: line 1, pg_atoi: error in "1068654573 6 192.168.10.73 39576 205.188.7.139 5190 146 eth0": can't parse " 6 192.168.10.73 39576 205.188.7.139 5190 1 46 eth0"
Shweik
Дата: 14.11.2003 19:24:51
А то ошибка есть а вот комманды нет!