【问题标题】:importing csv file to mysql choose columns将csv文件导入mysql选择列
【发布时间】:2013-05-06 17:07:38
【问题描述】:

我导入一个 csv 文件并在左侧写上 csv 的标题。在右侧,我创建了一个下拉列表。在下拉列表中,我有我的 mysql 列的值。我想通过下拉菜单选择适当的 CSV 标题。

$handle = fopen($dateinameneu, "r");
    $data = fgetcsv ($handle, 500, $spaltentrennzeichen);
    for ($i = 0, $j = count($data); $i < $j; $i++) {
    echo '
     <div class="control-group">
                        <label class="control-label" for="'.$data[$i].'">'.$data[$i].'</label>
                        <div class="controls">
                          <select id="'.$data[$i].'" name="'.$data[$i].'">
                            <option value="">Choose</option>
                            <option value="email">email</option>
                            <option value="phone">phone</option>                            
                          </select>
                        </div>
                      </div>
    ';

现在我将它发布到一个新的 php 文件中。导入文件。在那里我需要使用下拉列表中的变量。我想把它保存到我的mysql。但是我不知道怎么用。

$sql="
    LOAD DATA LOCAL INFILE '$datei'
    INTO TABLE empfaenger
    FIELDS TERMINATED BY '$spaltentrennzeichen'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    SET
    email = '###'
mysql_query($sql,$db);

### 我需要插入列名,然后在下拉列表中选择它是电子邮件。

【问题讨论】:

    标签: php mysql csv csv-import


    【解决方案1】:

    所以基本上你想告诉mysql你在csv中给出的表的哪些列?使用http://dev.mysql.com/doc/refman/5.1/de/load-data.html 很容易,您只需在语句末尾的 () 中给出要插入的列。由于您没有给出表结构,我不得不猜测。

    LOAD DATA LOCAL INFILE '$datei'
    INTO TABLE empfaenger
    FIELDS TERMINATED BY '$spaltentrennzeichen'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (empfaenger_name, $value_column_name )
    set empfaenger_id = null
    ;
    

    csv有多少列,表格有哪些列?如果您提供这些信息,您将得到更好的答案。

    编辑: 要丢弃不需要的列,只需将它们放入变量中即可。

    (@somecol0,@somecol1,@somecol2,电子邮件)

    编辑2:

    如果表有列empfaenger_id, email, phone。 csv 以 (empfaenger_id, email) 的形式给出,那么语句将是

    LOAD DATA LOCAL INFILE '$datei'
    INTO TABLE empfaenger
    FIELDS TERMINATED BY '$spaltentrennzeichen'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (empfaenger_id, email ) # that line is variable!
    ;
    

    如果你的网页说,csv是empfaenger_id,电话,声明是

    LOAD DATA LOCAL INFILE '$datei'
    INTO TABLE empfaenger
    FIELDS TERMINATED BY '$spaltentrennzeichen'
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (empfaenger_id, phone ) # that line is variable!
    ;
    

    您只需(在用户提交后)为 csv 的列创建 SQL 表中的列名列表。

    【讨论】:

    • 我的 csv: 1.line 0;1;2;3;email;phone, 2.line test;test1;test2;test@test.de;012345 我的 mysql id;email;phone -感谢您的回答。但是 1. 我得到了 for 的下拉列表,所以我不知道变量......在你的例子中 $value_column_name 是什么?
    • 我知道我的 mysql 有电话、电子邮件等,但我不知道如何说出它在 csv 中的哪一列。所以我想用下拉菜单选择它是什么字段。但是我怎样才能把它交给mysql脚本呢?
    • 查看SQL-Table-Structure,有一个列序列。您必须在 () - 部分中列出 csv 中的那些列。给出一个简单的示例表结构和csv行,使其更具体。
    • csv 结构是动态的,您可以在 for - 循环中看到它。那是我目前的问题。因为如果它是固定值,我没有问题。在我的下拉列表中,name="x" 是 csv 的列或标题。该值是 mysql 列。但是我怎样才能在 mysql 脚本中获取这些值呢?因为我需要例如电子邮件 = @email,姓氏 = @1?但我不知道如何将任务分配给 mysql 脚本。
    • 赋值不是通过set email=@email完成的,而是通过()里面的序列完成的。表结构是固定的,因此请给出 csv 的三个示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    相关资源
    最近更新 更多