SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 26.10.2009 22:50:50

dimacat
Участник
Зарегистрирован: 26.10.2009
Сообщений: 1

Наполнение таблицы

Здравствуйте ! Вот сел изучать MySQL. Читаю по Интуиту. Возник вопрос: вообщем требуется заполнить таблицу. Чтобы не вводить в командой строке MySQL постоянно INSERT, предложено скопировать файлик employee.dat в каталог c:\mysql\bin. Далее посоветовали проверить запущен ли MySQL, и потом выполнить команду mysql employees <employee.dat. И по идее таблица должна заполниться.

Итак, где выполнять эту команду (mysql employees <employee.dat) ?

Как я понял, можно зайти тоталом в директорию, куда надо кинуть файл, и в командой строке тотала написать эту команду и тискнуть ввод. Но после нажатия вылетает окошко, в котором написано: "ERROR 1045 (28000): Access danied for user "ODBC"@localhost (using password: no)". Английский я знаю, посему фразу понимаю. Объясните, что делать ? Заранее спасибо !

P.S. Ещё расскажите как кто наполняет таблицы, чтобы не приходилось всё писать руками

Неактивен

 

#2 26.10.2009 23:05:47

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Наполнение таблицы

mysql -u root -p employees <employee.dat   (после нажатия Enter предложит ввести пароль)
или
mysql -u root -pпароль_рута employees <employee.dat

Неактивен

 

#3 06.04.2010 06:16:02

okapi
Участник
Зарегистрирован: 06.04.2010
Сообщений: 4

Re: Наполнение таблицы

И еще вот вопросы про заполнение таблиц:
1) Есть две таблицы с однинаковым количеством строк. Как занести данные из одного из полей одной таблицы в одно из полей другой? То есть "скопировать" столбец из одной таблицы в другую?
2) Пусть в таблице есть 3 поля. И есть 3 файла .txt, содержащие данные каждого из полей, которые надо занести в таблицу. Возможно ли сначала заполнить 1й столбец из первого файла, потом 2й из второго (то есть insert в конец таблицы, а update рядом с данными первого столбца) и т.д.?

PS Спасибо за форум, очень интересный и толковый.

Неактивен

 

#4 06.04.2010 08:11:03

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Наполнение таблицы

1) UPDATE table1,table2 SET table1.col1=table2.col2 WHERE table1.id=table2.id;

http://dev.mysql.com/doc/refman/5.4/en/update.html

2) Сначала заполняем из первого файла способом, указанным ранее в этой теме, или LOAD DATA INFILE
Затем из второго файла заносим данные во временную табличку xxx, из которой  их переносим в основную (см пункт 1). Очищаем табличку xxx и повторяем операцию с третьим файлом.

Неактивен

 

#5 07.04.2010 04:30:01

okapi
Участник
Зарегистрирован: 06.04.2010
Сообщений: 4

Re: Наполнение таблицы

Спасибо! Ура! Всё у меня получается!)

Неактивен

 

#6 07.06.2012 14:31:57

xreal
Участник
Зарегистрирован: 07.06.2012
Сообщений: 5

Re: Наполнение таблицы

А подскажите пожалуйста, как быть в том случае, если у меня таблицы находятся в разных БД, но на одном сервере, и у меня нет поля id

Неактивен

 

#7 07.06.2012 15:22:40

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Наполнение таблицы

xreal написал:

А подскажите пожалуйста, как быть в том случае, если у меня таблицы находятся в разных БД, но на одном сервере

Используйтев запросе полное имя таблицы, т.е. `имя базы`.`имя таблицы`


xreal написал:

и у меня нет поля id

Используйте поле или комбинацию полей, которые однозначно определяют строку.

Неактивен

 

#8 07.06.2012 17:45:18

xreal
Участник
Зарегистрирован: 07.06.2012
Сообщений: 5

Re: Наполнение таблицы

А можно прикрепить в `имя базы`.`имя таблицы`.`ЕЩЁ_И_ЭЛЕМЕНТ` ?

Неактивен

 

#9 07.06.2012 21:54:54

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Наполнение таблицы

да

Неактивен

 

#10 07.06.2012 23:28:29

xreal
Участник
Зарегистрирован: 07.06.2012
Сообщений: 5

Re: Наполнение таблицы

Копирую данные из определённых столбцов структурно одинаковых таблиц, располагающихся на разных серверах. Первая таблица с данными, вторая пустая.

Подскажите пожалуйста можно ли так делать:

           //выполняем sql запрос с построенной строкой аргументов
            $field_data = mysql_query("SELECT $str FROM $dbName.$temp");
           
            while($row = mysql_fetch_array($field_data)) {
                mysql_query("INSERT INTO $newDB.$temp ($str) VALUES ($columns)");
            }


Где $str содержит строку следующего вида: столбец1, столбец2, столбец3 и тд
А $columns содержит строку вида: $row['column1'], $row['column2'], $row['column3']

Спасибо!

Отредактированно xreal (07.06.2012 23:30:55)

Неактивен

 

#11 08.06.2012 01:06:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Наполнение таблицы

$sql = "SELECT ".$str." FROM ".$dbName.".".$temp;
$field_data = mysql_query($sql) or die(mysql_error());

Неактивен

 

#12 08.06.2012 13:03:21

xreal
Участник
Зарегистрирован: 07.06.2012
Сообщений: 5

Re: Наполнение таблицы

Мне кажется, что делать вот так:

mysql_query("INSERT INTO $newDB.$temp ($str) VALUES ($columns)");


Не получится, потому что один раз вместо $columns мне уже подставляют строку и переменные которые в неё занесены не считаются за переменные. А вот как сделать так, чтобы было что-то похожее я не могу придумать. Просто у меня всё динамически и как подготовить список аргументов для VALUES, состоящий из переменных непонятно.

Неактивен

 

#13 08.06.2012 14:48:03

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Наполнение таблицы

Второй запрос тоже нужно преобразовать аналогично тому как преобразован первый.
Насчет "кажется", практика - критерий истины.

Неактивен

 

#14 08.06.2012 15:29:35

xreal
Участник
Зарегистрирован: 07.06.2012
Сообщений: 5

Re: Наполнение таблицы

Переделал запрос, всё равно не работает, может всё-таки всё дело в $columns? Переменные, которые в неё входят воспринимаются как обычная строка?

Неактивен

 

#15 08.06.2012 19:21:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Наполнение таблицы

Да. Нужно переделать
$columns = "$row['column1'], $row['column2'], $row['column3']"
в
$columns = $row['column1'].", ".$row['column2'].", ".$row['column3']

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson