[sql] Вопросы по БД

Discussion in 'PHP' started by FraiDex, 25 Feb 2008.

Thread Status:
Not open for further replies.
  1. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    $ pg_dump -E utf8 -n schemaname -t tablename -f dump.sql dbname
    $ man pg_dump
    $ man pg_dumpall
    
    Ну и phpPgAdmin есть
     
  2. Cybersteger

    Cybersteger Member

    Joined:
    9 Oct 2009
    Messages:
    40
    Likes Received:
    13
    Reputations:
    15
    А щось схоже на це є Sypex Dumper є. Де $ pg_dump -E utf8 -n schemaname -t tablename -f dump.sql dbname вписувати?
     
  3. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Как добавить в таблицу запись, при этом что бы запись имела порядковый id (id новый записи на 1 больше чем старой записи)?
     
  4. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Cybersteger, 1. не слышал, возможно, и есть. 2. в командной строке. 3. И пишите по-русски

    HTL, можно, например, так
    Code:
    insert into ttt (state, order_id) 
    values (0, (select max(order_id) from ttt) + 1);
    
    Только зачем, когда есть автоинкремент?
     
    1 person likes this.
  5. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    http://www.mysql.ru/docs/man/example-AUTO_INCREMENT.html
     
    1 person likes this.
  6. ZodiaX

    ZodiaX Reservists Of Antichat

    Joined:
    7 May 2009
    Messages:
    533
    Likes Received:
    308
    Reputations:
    51
    Подскажите, что не правильно делаю при выгрузке текстового файла
    LOAD DATA INFILE 'C:\bild.txt' INTO TABLE bd;
    ERROR 29 (HY000): File 'Cild.txt' not found (Errcode: 22)
    Все приведено дословно. Табуляция в файле соблюдена, но он по прежнему отказывается его видеть...
     
    #1026 ZodiaX, 14 Feb 2010
    Last edited: 15 Feb 2010
  7. shell_c0de

    shell_c0de Hack All World

    Joined:
    7 Jul 2009
    Messages:
    1,185
    Likes Received:
    618
    Reputations:
    690
    Code:
    DELETE table1 FROM zzz as table1,zzz as table2 WHERE table1.x=table2.x AND table1.y=table2.y AND table1.unique_id>table2.unique_id
    Где zzz - имя таблицы, x и y - поля

    или так
    Code:
    CREATE TABLE tmp_ttt SELECT * FROM ttt GROUP BY pole, dublpole HAVING COUNT(dublpole) >= 1
    Примерно так, принцип вроде понятен.
    еще вариант
    Code:
    Удаления полных дубликатов записей через выполнение distinct select
    --Создание копии таблицы без дубликатов во временной таблице
    CREATE TEMPORARY TABLE bad_temp AS SELECT DISTINCT * FROM table_name;
    --Удаление всех записей из старой таблицы
    DELETE FROM table_name;
    --Добавление записей без дублей
    INSERT INTO table_name SELECT * FROM bad_temp;
    --Удаление временной таблицы
    DROP TABLE bad_temp;
    
    Вариант с созданием временной таблицы:
    CREATE TABLE tmpid SELECT MIN(ID) ID FROM table_name GROUP BY unique_key;
    DELETE FROM table_name WHERE ID NOT IN (SELECT ID FROM tmpid);
     
    _________________________
    #1027 shell_c0de, 14 Feb 2010
    Last edited: 14 Feb 2010
  8. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    В таблице есть поле с типом "data"
    Какой запрос надо отправить чтобы удалить строки не сегодняшней даты?
     
  9. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    ... WHERE DATE(`data`) < DATE(NOW());
    
     
  10. Buffalon

    Buffalon Elder - Старейшина

    Joined:
    22 Mar 2008
    Messages:
    241
    Likes Received:
    34
    Reputations:
    8
    Есть текст типа
    $massiv[0][1] = "Авиация и космос"
    $e= $massiv[0][1];

    ВОт код

    $query="CREATE TABLE IF NOT EXISTS `se 123` (
    `id` INT ( 5 ) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR( 255 ) NOT NULL ,
    `text` TEXT NOT NULL,
    PRIMARY KEY ( `id` )
    )";
    mysql_query($query) or die ("Не возможно создать таблицу<br>".mysql_error());


    выводит

    Не возможно создать таблицу
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Авиация и космонавтика ' ( `id` INT ( 5 ) NOT NULL AUTO_INCREMENT, `n' at line 1
     
  11. Buffalon

    Buffalon Elder - Старейшина

    Joined:
    22 Mar 2008
    Messages:
    241
    Likes Received:
    34
    Reputations:
    8
    мде...профессионалы блин
     
  12. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Buffalon
    Бред какой-то. SQL из твоего поста никак не может выводить ошибку содержащую текст "Авиация и космонавтика" т.к. ты не передаеш никаких переменных с этим значением. Перед тем как задать вопрос проверяй то что ты пишеш.
     
  13. siw

    siw Member

    Joined:
    7 May 2007
    Messages:
    22
    Likes Received:
    10
    Reputations:
    0
    Не используй русских букв в имени таблицы.
    Уж если так хочется назвать таким именем переведи в транслит
     
    #1033 siw, 20 Feb 2010
    Last edited: 20 Feb 2010
  14. felix_

    felix_ New Member

    Joined:
    25 Sep 2008
    Messages:
    24
    Likes Received:
    3
    Reputations:
    0
    SELECT count(*),`user`.`login`,`user`.`pass` FROM `user` HAVING md5(login,pass)=md5('loginPASS')

    это не работает, а когда один параметр в например md5(login), то всё работает... как можно сделать чтоб с 2мя параметрами работало?
    ответ-
    SELECT count(*),`user`.`login`,`user`.`pass` FROM `user` HAVING md5(CONCAT(login,pass))=md5('loginPASS')
     
    #1034 felix_, 21 Feb 2010
    Last edited: 21 Feb 2010
  15. ++Norton++

    ++Norton++ Elder - Старейшина

    Joined:
    20 Nov 2006
    Messages:
    167
    Likes Received:
    39
    Reputations:
    0
    Вопрос такой, есть текстовый файл, в котором в указаны слова. Каждое с новой строки.
    Их надо занести в БД выполнив простой:
    Code:
    INSERT INTO table VALUES ('', 'word_from_textfile');
    
    где word_from_textfile - слово из данного текстового файла. Забить эти строки в БД нужно раз и навсегда. Но проблема в том, что строк больше 1000 и вручную забивать, мягко говоря, не очень хочется.
    Какой более рациональный метод? Как лучше поступить?
     
  16. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    PHP:
    <?php
    $link 
    mysql_connect('localhost''mysql_user''mysql_password'); // Конект к БД
    if (!$link) {
        die(
    'Could not connect: ' mysql_error());
    }

    $db_selected mysql_select_db('foo'$link); // Выбираем Таблицу
    if (!$db_selected) {
        die (
    'Can\'t use foo : ' mysql_error());
    }

    $file file('your_file.txt'); // Файл с словами
    $file array_map('trim'$file);


    $i 0;
    foreach (
    $file as $string) {

    $result mysql_query("INSERT INTO table VALUES ('', '$string');");
    if (!
    $result) {
        die(
    $i.' Invalid query: ' mysql_error().'<br>');
    } else {
        echo 
    $i.' Строка ('.$string.') удачно занесена в БД<br>';
    }

    $i++;
    }

    mysql_close($link);
    ?>
     
    1 person likes this.
  17. НTL

    НTL Elder - Старейшина

    Joined:
    26 Jan 2008
    Messages:
    715
    Likes Received:
    205
    Reputations:
    -26
    Таблица может держать >10кк записей? и какая будет скорость при работе с такой таблицей?
     
  18. +casper+

    +casper+ Banned

    Joined:
    27 Jun 2009
    Messages:
    158
    Likes Received:
    34
    Reputations:
    0
    каким запросом делать поиск по колонке?? мне например нужно проверять есть ли значение в базе или нет, если нет то записать, а если есть удалить. как наваять такую ф-ю?
     
  19. +casper+

    +casper+ Banned

    Joined:
    27 Jun 2009
    Messages:
    158
    Likes Received:
    34
    Reputations:
    0
    НTL, скорость зависит от твоей машины.
     
  20. OdaN

    OdaN Elder - Старейшина

    Joined:
    4 Mar 2006
    Messages:
    192
    Likes Received:
    17
    Reputations:
    1
    Подскажите, плз. Нужен sql запрос в мускуль, который будет возвращать даты за определенный интервал. Чтобы было понятнее - сейчас пользуюсь таким запрсом:

    Code:
    SELECT date
    FROM ( 
    SELECT curdate()-interval 4 day  AS date
    UNION ALL SELECT curdate()-interval 3 day 
    UNION ALL SELECT curdate()-interval 2 day 
    UNION ALL SELECT curdate()-interval 1 day 
    UNION ALL SELECT curdate() 
    UNION ALL SELECT curdate()+interval 1 day  
    UNION ALL SELECT curdate()+interval 2 day
    UNION ALL SELECT curdate()+interval 3 day
    UNION ALL SELECT curdate()+interval 4 day
    ) as t
    Но нужно более гибкое решение, чтобы можно было проще менять количество дней до\после curdate()
     
Thread Status:
Not open for further replies.