Перейти к содержанию
СофтФорум - всё о компьютерах и не только

метод DATA INFILE


Рекомендуемые сообщения

Проблема с Mysql: не получается загрузить методом DATA INFILE содержимое текстового файла в виде CSV в БД.

Просто глухо! К тому же ошибка не понятно где, ничего не пишет.

Очень нужен скрипт загрузки файла в заданную БД, с паролем, названием БД и таблицы. ;)

Если есть файл 1;2;3, etc. 4;5;6 ...

то это должно появиться в ячейках БД.

Но ничего не происходит ;)

вот что я делаю, но все равно подскажите правильный скрипт:

<?php

// Connecting, selecting database

$link = mysql_connect('localhost', 'root', '')

or die('Could not connect: ' . mysql_error());

echo 'Connected successfully';

mysql_select_db('test1') or die('Could not select database');

// Performing SQL query

$query1 = "LOAD DATA INFILE 'txt2.txt' INTO TABLE test";

$query="SELECT * FROM test";

$result = mysql_query($query) or die('Query failed: ' . mysql_error());

// Printing results in HTML

echo "<table>\n";

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {

echo "\t<tr>\n";

foreach ($line as $col_value) {

echo "\t\t<td>$col_value</td>\n";

}

echo "\t</tr>\n";

}

echo "</table>\n";

// Free resultset

mysql_free_result($result);

mysql_close($link);

?>

Ссылка на комментарий
Поделиться на другие сайты

Надо было просто пробовать до конца... и подумать о том, что отображение ошибок обязано быть...

в результате оказалось, что файл в другой директории искался, он почему-то ищется в usr/local/mysql4/data, а я хочу в другой.

Это можно?

Ссылка на комментарий
Поделиться на другие сайты

Пропишите польний путь к файлу

Для этого можно пользувать dirname( __FILE__ )

Ну например если скрипт и файл в одной и тоже папке:

$query1 = sprintf("LOAD DATA INFILE '%s' INTO TABLE test", dirname( __FILE__ )."/txt2.txt" );
Ссылка на комментарий
Поделиться на другие сайты

Не могли бы помочь сделать, чтобы из массива базы данных преобразовывалось в текст вида:

"A1=строка 1, колонка 1, B1=стр.1, кол.2, C1=...

A2=строка 2, кол.1, и т.д."

как в excel

ПЛИЗ! :bye1:

ВАЖНО: чтобы происходила проверка, если поле пустое, то не нужно создавать запись в этом случае, например, если A5 пусто, то не надо A5=...

:)

Ссылка на комментарий
Поделиться на другие сайты

Я не совсем понял, как работает этот метод:

dirname( __FILE__ )."/txt2.txt"

что из этого надо заменить, если по умолчанию файл ищется в usr/local/mysql4/data/test1, а нужно в

/home/ipnumber/

Ссылка на комментарий
Поделиться на другие сайты

motorway:

константа __FILE__ в пхп указывает абсолютный путь к текущему файлу (те к файлу из которого она была вызвана)

функция dirname() возвращает имя директории из пути.

Если ты уверен что тебе нужна именно директория /home/ipnumber/ и она никогда не изменится, то можешь прямо ее и писать в пути.

Ссылка на комментарий
Поделиться на другие сайты

motorway:

константа __FILE__ в пхп указывает абсолютный путь к текущему файлу (те к файлу из которого она была вызвана)

функция dirname() возвращает имя директории из пути.

Если ты уверен что тебе нужна именно директория /home/ipnumber/ и она никогда не изменится, то можешь прямо ее и писать в пути.

Т.е. синтаксис такой: dirname( __FILE__ )/home/ipnumber/"/txt2.txt"

?

Как правильно?

И еще - не получается сохранять файл в др. директории. Как сделать скрипт создания файла в др. директории? сам скрипт в одной , а файл делается в другой. Есть пример?

Ссылка на комментарий
Поделиться на другие сайты

Чтоб сохранял файл в другой директории, у скрипта / веб-сервера должни иметься права записи в той директории

Если твой скрипт в /home/ipnumber, то синтаксис такой:

dirname(__FILE__)."/txt2.txt"

Если твой скрипт в home, а файл в /home/ipnumber/ будеть:

dirname(__FILE__)."/ipnumber/txt2.txt"

Т.е. dirname(__FILE__) обозначаеть текущую директорию

Ссылка на комментарий
Поделиться на другие сайты

Наверно, нужно было спросить до этого:

а если скрипт в E:/**/home/ip/subdomain/,

а БД в E:/**/usr/local/mysql4/data/test1/

?

тут можно запутаться :)

Ссылка на комментарий
Поделиться на другие сайты

еще вопрос:

нужно написать строку типа R$hC$j,

где $h, $j - числа

т.е. должно получаться, например, R1C2,

но проблема в том, что оно воспринимает hC, как одну переменную, а не $h.

R и С - постоянные, меняются только числа j & h

Ссылка на комментарий
Поделиться на другие сайты

еще вопрос:

нужно написать строку типа R$hC$j,

где $h, $j - числа

т.е. должно получаться, например, R1C2,

но проблема в том, что оно воспринимает hC, как одну переменную, а не $h.

R и С - постоянные, меняются только числа j & h

тут два варианта:

1й: "R" . $h . "C" . $j

2й: "R{$h}C{$j}"

выбирай что тебе ближе, я лично второй использую

Ссылка на комментарий
Поделиться на другие сайты

При экспорте из CSV в БД пропадает часть содержимого, напр.:

0001: x=[0,10]; y=1;

0004: y = 11; x=1;

То, что в [], пропадает, и если большие пробелы, тоже исчезает часть файла. Почему? Как сделать, чтобы читалось со знака : и игнорировало большие пробелы?

Ссылка на комментарий
Поделиться на другие сайты

motorway: попробуй такой код:

<?php$file = "file.csv"; //путь и имя файла$CSV_temp = file($file);foreach($CSV_temp as $l) { $l = explode(":", $l); $l[1] = explode(";", $l[1]); foreach($l[1] as $el) {$el = explode("=", $el);$CSV[ $l[0] ][ trim($el[0]) ] = trim($l[1]); }}unset($CSV_temp, $l, $el);?>

После выполнения этого кода ты получишь двумерный массив $CSV

например чтобы из приведенного тобой файла вынуть значение 11 (строка 0004, значение y) тебе нужно выполнить данный код и после обратиться так: $your_var = $CSV['0004']['y'];

Удачи!

Изменено пользователем Лорд Дмитрий
Ссылка на комментарий
Поделиться на другие сайты

Что-то не работает нормально этот код.

Пишет notice: array to string conversion.

А при:

$your_var = $CSV['00004']['y'];

echo ("$your_var[4]");

пишет буквы из слова Array, смотря по номеру в [].

Ссылка на комментарий
Поделиться на другие сайты

Кое-как разобрался, установив тип ячеек в БД text.

Но как сделать, чтобы переменным присваивались значения только последней строки из строк таблицы, и только то, что после знака равно и до точки с запятой:

В таблице БД:

0001: a=3; b=5; R11=[60,70];

Должно быть в php:

$var1=3; $var2=5; $var3=[60,70];

либо $a=3; $b=5; $R11=[60,70];

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...