motorway Опубликовано 11 апреля, 2007 Жалоба Поделиться Опубликовано 11 апреля, 2007 Проблема с 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); ?> Ссылка на комментарий Поделиться на другие сайты Поделиться
motorway Опубликовано 11 апреля, 2007 Автор Жалоба Поделиться Опубликовано 11 апреля, 2007 Надо было просто пробовать до конца... и подумать о том, что отображение ошибок обязано быть... в результате оказалось, что файл в другой директории искался, он почему-то ищется в usr/local/mysql4/data, а я хочу в другой. Это можно? Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 11 апреля, 2007 Жалоба Поделиться Опубликовано 11 апреля, 2007 Пропишите польний путь к файлу Для этого можно пользувать dirname( __FILE__ ) Ну например если скрипт и файл в одной и тоже папке: $query1 = sprintf("LOAD DATA INFILE '%s' INTO TABLE test", dirname( __FILE__ )."/txt2.txt" ); Ссылка на комментарий Поделиться на другие сайты Поделиться
motorway Опубликовано 11 апреля, 2007 Автор Жалоба Поделиться Опубликовано 11 апреля, 2007 Не могли бы помочь сделать, чтобы из массива базы данных преобразовывалось в текст вида: "A1=строка 1, колонка 1, B1=стр.1, кол.2, C1=... A2=строка 2, кол.1, и т.д." как в excel ПЛИЗ! ВАЖНО: чтобы происходила проверка, если поле пустое, то не нужно создавать запись в этом случае, например, если A5 пусто, то не надо A5=... :) Ссылка на комментарий Поделиться на другие сайты Поделиться
motorway Опубликовано 12 апреля, 2007 Автор Жалоба Поделиться Опубликовано 12 апреля, 2007 Я не совсем понял, как работает этот метод: dirname( __FILE__ )."/txt2.txt" что из этого надо заменить, если по умолчанию файл ищется в usr/local/mysql4/data/test1, а нужно в /home/ipnumber/ Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 13 апреля, 2007 Жалоба Поделиться Опубликовано 13 апреля, 2007 motorway: константа __FILE__ в пхп указывает абсолютный путь к текущему файлу (те к файлу из которого она была вызвана) функция dirname() возвращает имя директории из пути. Если ты уверен что тебе нужна именно директория /home/ipnumber/ и она никогда не изменится, то можешь прямо ее и писать в пути. Ссылка на комментарий Поделиться на другие сайты Поделиться
motorway Опубликовано 13 апреля, 2007 Автор Жалоба Поделиться Опубликовано 13 апреля, 2007 motorway: константа __FILE__ в пхп указывает абсолютный путь к текущему файлу (те к файлу из которого она была вызвана) функция dirname() возвращает имя директории из пути. Если ты уверен что тебе нужна именно директория /home/ipnumber/ и она никогда не изменится, то можешь прямо ее и писать в пути. Т.е. синтаксис такой: dirname( __FILE__ )/home/ipnumber/"/txt2.txt" ? Как правильно? И еще - не получается сохранять файл в др. директории. Как сделать скрипт создания файла в др. директории? сам скрипт в одной , а файл делается в другой. Есть пример? Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 13 апреля, 2007 Жалоба Поделиться Опубликовано 13 апреля, 2007 Чтоб сохранял файл в другой директории, у скрипта / веб-сервера должни иметься права записи в той директории Если твой скрипт в /home/ipnumber, то синтаксис такой: dirname(__FILE__)."/txt2.txt" Если твой скрипт в home, а файл в /home/ipnumber/ будеть: dirname(__FILE__)."/ipnumber/txt2.txt" Т.е. dirname(__FILE__) обозначаеть текущую директорию Ссылка на комментарий Поделиться на другие сайты Поделиться
motorway Опубликовано 13 апреля, 2007 Автор Жалоба Поделиться Опубликовано 13 апреля, 2007 Наверно, нужно было спросить до этого: а если скрипт в E:/**/home/ip/subdomain/, а БД в E:/**/usr/local/mysql4/data/test1/ ? тут можно запутаться :) Ссылка на комментарий Поделиться на другие сайты Поделиться
motorway Опубликовано 13 апреля, 2007 Автор Жалоба Поделиться Опубликовано 13 апреля, 2007 еще вопрос: нужно написать строку типа R$hC$j, где $h, $j - числа т.е. должно получаться, например, R1C2, но проблема в том, что оно воспринимает hC, как одну переменную, а не $h. R и С - постоянные, меняются только числа j & h Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 14 апреля, 2007 Жалоба Поделиться Опубликовано 14 апреля, 2007 еще вопрос: нужно написать строку типа R$hC$j, где $h, $j - числа т.е. должно получаться, например, R1C2, но проблема в том, что оно воспринимает hC, как одну переменную, а не $h. R и С - постоянные, меняются только числа j & h тут два варианта: 1й: "R" . $h . "C" . $j 2й: "R{$h}C{$j}" выбирай что тебе ближе, я лично второй использую Ссылка на комментарий Поделиться на другие сайты Поделиться
motorway Опубликовано 15 апреля, 2007 Автор Жалоба Поделиться Опубликовано 15 апреля, 2007 При экспорте из CSV в БД пропадает часть содержимого, напр.: 0001: x=[0,10]; y=1; 0004: y = 11; x=1; То, что в [], пропадает, и если большие пробелы, тоже исчезает часть файла. Почему? Как сделать, чтобы читалось со знака : и игнорировало большие пробелы? Ссылка на комментарий Поделиться на другие сайты Поделиться
Ф@РТОВЫЙ Опубликовано 16 апреля, 2007 Жалоба Поделиться Опубликовано 16 апреля, 2007 (изменено) 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']; Удачи! Изменено 16 апреля, 2007 пользователем Лорд Дмитрий Ссылка на комментарий Поделиться на другие сайты Поделиться
motorway Опубликовано 17 апреля, 2007 Автор Жалоба Поделиться Опубликовано 17 апреля, 2007 Что-то не работает нормально этот код. Пишет notice: array to string conversion. А при: $your_var = $CSV['00004']['y']; echo ("$your_var[4]"); пишет буквы из слова Array, смотря по номеру в []. Ссылка на комментарий Поделиться на другие сайты Поделиться
motorway Опубликовано 17 апреля, 2007 Автор Жалоба Поделиться Опубликовано 17 апреля, 2007 Кое-как разобрался, установив тип ячеек в БД text. Но как сделать, чтобы переменным присваивались значения только последней строки из строк таблицы, и только то, что после знака равно и до точки с запятой: В таблице БД: 0001: a=3; b=5; R11=[60,70]; Должно быть в php: $var1=3; $var2=5; $var3=[60,70]; либо $a=3; $b=5; $R11=[60,70]; Ссылка на комментарий Поделиться на другие сайты Поделиться
motorway Опубликовано 17 апреля, 2007 Автор Жалоба Поделиться Опубликовано 17 апреля, 2007 Еще вопрос по БД: есть файл .dmp - как из phpmyadmin сделать доступной БД этого файла? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти